如果我想在Linux中实现一些功能(例如打开、复制、压缩、删除、等待事件),是用C++实现并将二进制文件作为进程运行还是在shell脚本中实现更好?
假设我忽略实现的细节,我现在想知道,在二进制文件作为进程启动期间,与启动 shell 脚本相比,会消耗多少内存和 cpu 负载?
答案1
速度会有所不同吗?是或否
如果您在脚本中实现压缩算法,那么它将比在 C++ 中实现的速度慢得多。
如果您只是调用库函数/命令来执行此操作,那么几乎没有什么区别。时间将主要由预先存在的库函数/命令完成的压缩决定。文件打开、文件复制、文件删除和等待都是由内核完成的,应用程序中完成的工作很少,因此变化也很小。
然而,了解的唯一方法是对两者进行测量。
一些优化规则
- 让它工作,然后(如果有必要)让它更快/更小。
- 优化可读性。
- 仅在有证据表明速度不快之后才优化速度足够的。
- 在优化速度时,测量两种实现,不要假设其中一种更快(您可能会错)。
- 永远不要针对最好的情况进行优化,而是针对更差或平均的情况进行优化。