命令行实用程序可以比C ++更快吗?

时间:2011-07-06 21:07:32

标签: c++ bash sed grep

我有一个项目,我想操纵某些输出文件。

这可以使用grep和sed的组合以及使用|

的管道来实现

或者,我也可以编写一个C ++程序来做同样的事情。

因为grep和sed应该已经相当好地优化,所以哪种方法更快会有一个确凿的答案吗?

4 个答案:

答案 0 :(得分:7)

从技术角度来看,一个编写良好的自包含C ++程序可以完成所需的一切,比使用与管道互连的两个(或更多)shell命令更快,因为没有IPC开销,而且它们都是可以根据您的具体需求量身定制和优化。

但除非你正在编写一个多年来全天候运行的程序,否则你将永远不会注意到足够的收益值得付出努力。

预优化的标准规则适用......

答案 1 :(得分:4)

如果我是你,请使用已经存在的,因为这些可能已经存在了很长时间并且已经过测试和尝试。自己编写一个新程序来做同样的事情似乎是重新发明轮类型的动作,并且容易出错。

答案 2 :(得分:0)

如果您确实需要比使用管道更快的性能,您可以下载grep和sed的源代码并在一个应用程序中根据您的需要进行定制(如果您计划分发代码,请注意许可证)。如果您甚至注意到管道的开销(如Flimzy提到的那样),我会非常惊讶,所以如果事情真的那么慢,我就会开始分析您的应用程序。

答案 3 :(得分:0)

如果您是非常优秀的C / C ++程序员并花费很多时间,那么您很可能会编写一个比你正在考虑的管道。但除非在这种情况下性能如此重要,否则你绝对必须这样做,你应该使用管道。