命令行实用程序可以比c++更快

can command line utilities be faster than C++?

本文关键字:c++ 更快 实用程序 命令行      更新时间:2023-10-16

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

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

的管道来完成

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

是否有一个结论性的答案,哪个方法会更快,因为grep和sed应该已经相当好地优化?

从技术角度来看,编写良好的自包含c++程序,它可以完成您需要的一切,将比使用两个(或更多)与管道相互连接的shell命令更快,仅仅是因为没有IPC开销,并且它们可以根据您的确切需求进行定制和优化。

但是,除非你正在编写一个可以连续多年24/7运行的程序,否则你永远不会注意到值得付出努力的收获。

预优化的标准规则适用于…

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

如果您确实需要比管道更快的性能,您可以下载grep和sed的源代码,并在一个应用程序中对其进行定制以满足您的需求(如果您计划分发代码,请注意许可)。如果你注意到管道的开销(就像fllimzy提到的),我会非常惊讶,所以如果事情真的很慢,我会开始分析你的应用。

如果您是一个非常优秀的C/c++程序员,并且花费了大量时间,那么您很可能能够编写出比您正在考虑的管道更快的程序。但是,除非在这种情况下性能非常关键,您绝对必须这样做,否则您应该使用管道。