Pour un ensemble donné de fichiers texte, je dois trouver chaque caractère "\
" et le remplacer par "\\
". C'est un système Windows, et mes options de langage de script sont Javascript, VBScript ou Perl.Amélioration de l'algorithme d'entrées/sorties de mon fichier
Ces fichiers sont gros (~ 10Mo par pièce), et ils sont nombreux (~ 15 000). Je suis déjà venu avec le Javascript suivant:
function EscapeSlashes(inFilePath)
{
var readOnly = 1;
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var outFile = fso.CreateTextFile(inFilePath + "escaped.js", true);
var inFile = fso.OpenTextFile(inFilePath, readOnly);
var currChar;
while(!inFile.AtEndOfStream)
{
currChar = inFile.Read(1);
//check for single backslash
if(currChar != "\\")
{
outFile.Write(currChar);
}
else
{
//write out a double backslash
outFile.Write("\\\\");
}
}
outFile.Close();
inFile.Close();
}
Je suis inquiet que ce qui précède pourrait être un peu lent. Y a-t-il un moyen d'améliorer l'algorithme? Puisque je remplace un personnage par deux, je ne pense pas que cela puisse être fait sur place.
Y at-il un avantage de performance à lire ligne par ligne, plutôt que caractère par caractère?
Est-ce que Perl ou VBScript ont des avantages par rapport à Javascript dans ce cas?