15

我正在运行一项艰巨的任务 [使用 perl + 数据库等编写的自动翻译脚本] 不间断运行大约 2 周。在思考如何加快速度时,我看到翻译器一直将所有内容(所有翻译的句子,所有信息)输出到 STDOUT。当我在控制台上获得输出时,这使得它的工作明显变慢。

我显然将输出传输到/dev/null,但后来我想“可能有更快的东西吗?” 它的输出如此之多,以至于它真的会有所作为。

这就是我要问你的问题,因为据我所知,没有什么比这更快了......(但我远不是一个只在过去 3 年里每天都使用 linux 的大师)

4

3 回答 3

26

/dev/null 的输出是在内核中实现的,这非常快。输出管道现在不是您的问题,它是构建发送到 /dev/null 的字符串所需的时间。我建议您通过该程序并注释掉(或用 保护 if $be_verbose)所有无用的打印语句的行。我很确定这会给你一个明显的加速。

于 2010-04-27T21:11:09.177 回答
20

我能够(通过dd)每秒向 /dev/null 转储 20 GB 的数据。这不是你的瓶颈:-p

几乎唯一让它更快的方法是首先不生成数据 - 完全删除日志记录语句。生成所有日志消息的成本可能会大大超过丢弃它们的成本。

于 2010-04-27T21:11:54.577 回答
0

与 perl 和标准输出无关,但有null_blk块设备,比/dev/null. 基本上,它受系统调用性能的限制,并且对于大块它可以使内存总线饱和。

于 2022-01-07T09:41:02.657 回答