La consommation mémoire de HashLips Art Engine dépend fortement des paramètres initiaux. Dans src/config.js, ajustez les dimensions et le lissage pour réduire l'empreinte mémoire :
const canvasConfig = {
width: 256,
height: 256,
antiAliasing: false
};
Pour les tests, réduisez les dimensions à 256x256 et désactivez le lissage. En production, restaurez les dimensions d'origine via un script de pixelisation après tratiement.
Gestion des prévisualisations
La génération de prévisualisations est gourmande en ressources. Optimisez les paramètres :
const previewSettings = {
thumbnailsPerRow: 4,
thumbnailDimension: 40,
compressionLevel: 75
};
const gifSettings = {
framesPerBatch: 8,
quality: 70,
frameInterval: 400
};
Structure des couches
Une organisation rigoureuse des dossiers réduit les redondances :
- Uniformisez les résolutions dans chaque dossier de couche
- Supprimez les fichiers similaires (>85% de similarité) avec un outil de dédoublonnage
- Pour les arrière-plans : utilisez PNG-8 avec ≤256 couleurs
- Pour les détails : conservez PNG-24 avec canal alpha compressé via TinyPNG
Optimisation du moteur de rendu
Dans utils/pixelate.js, ajoutez une vérification dynamique :
function scaleCanvas(image) {
const baseW = canvas.width;
const baseH = canvas.height;
let currentW = baseW * scaleFactor;
let currentH = baseH * scaleFactor;
const MAX_DIMENSION = 2048;
if (currentW > MAX_DIMENSION || currentH > MAX_DIMENSION) {
const scaleRatio = Math.min(MAX_DIMENSION / currentW, MAX_DIMENSION / currentH);
currentW *= scaleRatio;
currentH *= scaleRatio;
}
ctx.imageSmoothingEnabled = false;
ctx.drawImage(image, 0, 0, currentW, currentH);
}
Pour la génération de prévisualisations, utilisez un traitement asynchrone par lots :
async function processInBatches(data, size = 5) {
for (let i = 0; i < data.length; i += size) {
const batch = data.slice(i, i + size);
await renderBatch(batch);
await new Promise(res => setTimeout(res, 50));
}
}
Optimisation système
Exécutez le script avec des paramètres mémoire ajustés :
node --max-old-space-size=3072 index.js
Nettoyez régulièrement les fichiers temporaires :
rm -rf build/* .cache/*
Résultats mesurables
- Réduction de 45-60% de la consommation mémoire
- Diminution de 35% du temps de génération
- Stabilité améliorée pour les projets à 500+ couches