【发布时间】:2011-10-14 13:09:50
【问题描述】:
我需要将一个大文件转换为以下格式:对于每个字节,将该字节打印为字符并将其十进制值打印在括号中,这样“@”就变成了“@[64]”。我有以下内容:
var s = fs.createReadStream(path, { encoding: 'binary' });
var p = [];
s.addListener('data', function(data) {
for(var i = 0; i < data.length; i++) {
p.push(data.charAt(i) + "[" + data.charCodeAt(i) + "]");
}
});
s.addListener('end', function(data) {
console.log(p.join(""));
});
然而,这种工作非常缓慢。有什么想法可以优化吗?
更新。根据评论,添加了一些日期语句,并发现“p.push”行占用了大部分时间。所以我想问题不在于文件读取。不过,问题仍然存在 - 如何加快速度。
【问题讨论】:
-
你有没有分析过?重要的是要弄清楚这段代码是花时间做你自己的工作(即数组操作)还是只是在等待文件系统。在后一种情况下,您无能为力。
-
@Domenic:我如何分析 node.js 代码?
-
console.log和Dates 应该可以帮助您入门。对于更高级的解决方案,您可能需要 Node Inspector:howtonode.org/debugging-with-node-inspector
标签: javascript node.js io