命令行实用程序可以比c++更快
can command line utilities be faster than C++?
我有一个项目,我想操作某些输出文件。
这可以使用grep和sed的组合以及带有|
的管道来完成或者,我也可以写一个c++程序来做同样的事情。
是否有一个结论性的答案,哪个方法会更快,因为grep和sed应该已经相当好地优化?
从技术角度来看,编写良好的自包含c++程序,它可以完成您需要的一切,将比使用两个(或更多)与管道相互连接的shell命令更快,仅仅是因为没有IPC开销,并且它们可以根据您的确切需求进行定制和优化。
但是,除非你正在编写一个可以连续多年24/7运行的程序,否则你永远不会注意到值得付出努力的收获。
预优化的标准规则适用于…
如果我是你,我会使用已经存在的,因为这些可能已经存在很长时间了,并且已经经过了测试和尝试。自己写一个新程序来做同样的事情,看起来像是在重新发明类型的动作,而且很容易出错。
如果您确实需要比管道更快的性能,您可以下载grep和sed的源代码,并在一个应用程序中对其进行定制以满足您的需求(如果您计划分发代码,请注意许可)。如果你注意到管道的开销(就像fllimzy提到的),我会非常惊讶,所以如果事情真的很慢,我会开始分析你的应用。
如果您是一个非常优秀的C/c++程序员,并且花费了大量时间,那么您很可能能够编写出比您正在考虑的管道更快的程序。但是,除非在这种情况下性能非常关键,您绝对必须这样做,否则您应该使用管道。
相关文章:
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 二叉搜索如何比线性搜索更快?
- push_back并插入 C++ STL 中哪个更快?
- 如何使插入排序更快?
- C++,为什么数组比矢量更快,使用更少的内存
- 哪个更快:在 1d 向量中按字符串搜索还是在 2d 向量中按向量搜索?
- 哪种方式更快?究竟发生了什么,我们没有看到什么?
- 使用 int32_t 而不是双精度运行矢量点积是否更快?
- 为什么一种算法在相同的时间复杂度下比另一种算法更快?
- C++模运算符与移位运算符,哪个更快,为什么?
- 遍历向量与数组哪个更快?
- 为什么按值传递QStringView比引用常量更快?
- 更快的C++算术运算
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- 当我不关心顺序并且没有重复项时,更快的擦除删除成语?
- 如果要求比较器是严格的总排序,而不仅仅是严格的弱排序,C++标准算法会更快吗?
- SDL GPU 为什么将两个图像分成两个单独的循环更快?
- 有没有更快的方法可以在 std::vector 中插入元素
- 为什么酷睿i5-6600在非方阵乘法方面比酷睿i9-9960X更快?
- 有没有办法使这段代码更快?