Je travaille avec un programme qui traite des fichiers, je peux faire plusieurs choses comme les renommer, lire le contenu d'entre eux, etc.RAM Trading par CPU (problème de performance)
Aujourd'hui, je suis initialisant comme suit:
return new Promise((resolve, reject) => {
glob("path/for/files/**/*", {
nodir: true
}, (error, files) => {
files = files.map((file) => {
// properties like full name, basename, extension, etc.
});
resolve(files);
});
});
, je lis le contenu d'un répertoire spécifique, retourner tous les fichiers dans un tableau, puis utilisez la Array.map itérer sur le tableau et changer les chemins d'un objet avec des propriétés.
Parfois, je travaille avec 200 000 fichiers texte, donc cela devient un problème car il consomme trop de RAM. Donc, je veux remplacer par une fonction de construction avec chargement paresseux .. mais je n'ai jamais fait cela avant ... donc je cherche une main d'aide.
C'est mon code:
class File {
constructor(path) {
this.path = path;
}
extension() {
return path.extname(this.path);
}
// etc
}
Alors, ma question principale est: dois-je revenir que l'évaluation de la propriété, ou devrais-je le remplacer? Comme ceci:
extension() {
this.extension = path.extname(this.path);
}
Je comprends que c'est un compromis .. je vais au commerce de la mémoire par l'utilisation du processeur.
Merci.
Que diriez-vous * pas * en utilisant des classes? Vous ne pouvez pas stocker les données de fichier dans des objets simples? – MaxArt
Je stocke le fichier dans un tableau d'objets, et lequel est un objet. Je veux changer de classe pour améliorer l'utilisation de la mémoire. –
@FXAMN Pourquoi croyez-vous que les classes vont réduire l'utilisation de la mémoire? – Raito