gpt4 book ai didi

javascript - 改进我的文件 i/o 算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:45 26 4
gpt4 key购买 nike

对于一组给定的文本文件,我需要找到每个“\”字符并将其替换为“\\”。这是一个 Windows 系统,我的脚本语言选项是 Javascript、VBScript 或 Perl。

这些文件很大(一个约 10MB),而且数量很多(约 15,000 个)。我已经提出了以下 Javascript:

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();
}

我担心上面的代码可能有点慢。有什么方法可以改进算法吗?因为我要用两个字符替换一个字符,所以我认为这不能就地完成。

逐行阅读而不是逐字符阅读有什么性能优势吗?

在这种情况下,Perl 或 VBScript 是否比 Javascript 有任何优势?

最佳答案

您无法就地执行此操作,但通常最好分块读取数据而不是一次读取单个值。读取一个 block ,然后遍历它。读取另一个 block ,等等 - 直到“ block ”的长度为 0,或者对 Read 的调用指示流的结尾。 (在大多数平台上,对 Read 的调用可以表明这一点,而不必调用单独的 AtEndOfStream 函数。)

此外,如果 Perl 可以在一行中完成此操作,我也不会感到惊讶。或者如果可以的话使用 sed :)

关于javascript - 改进我的文件 i/o 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/971859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com