我正在执行一项巨大的任务[使用perl +数据库等编写脚本的自动翻译],可以不间断地运行大约2周。在思考如何加快速度的同时,我看到翻译人员一直向STDOUT输出所有内容(所有翻译的句子,所有信息)。这使我在控制台上获得输出时工作速度明显变慢。
我显然将输出传输到/dev/null
,但后来我想“可能会有更快的东西吗?”这是如此多的输出,它确实有所作为。
这就是我问你的问题,因为据我所知,没有什么比这更快了......(但我不是每天只使用linux的大师,而是仅仅过去3年)
答案 0 :(得分:21)
输出到/ dev / null在内核中实现,这非常血腥。输出管道现在不是你的问题,它是构建发送到/ dev / null的字符串所需的时间。我建议你通过程序并注释掉(或用if $be_verbose
保护)所有无用的打印语句行。我很确定这会给你一个明显的加速。
答案 1 :(得分:18)
我能够(通过dd
)每秒向/ dev / null转储20千兆字节的数据。这不是你的瓶颈:-p
使速度更快的唯一方法是首先不生成数据 - 完全删除日志记录语句。产生所有日志消息的成本可能超过了扔掉它们的成本。