C ++比Bash脚本写入文本文件快得多

C ++比Bash脚本写入文本文件快得多,第1张

概述C ++比Bash脚本写入文本文件快得多

我想testing写在bash脚本中的文件与C ++程序的性能。

这里是bash脚本:

#!/bin/bash while true; do echo "something" >> bash.txt done

这增加了大约2-3 KB的文本文件每秒。

这里是C ++代码:

如何通过unix中的数据来valIDation组的数量

有没有一种好的方法来检测过时的NFS挂载

在Bash中显示长时间运行的应用程序的进度

全局设置环境variables,无需重新启动Ubuntu

从外部禁用linux程序的信号

#include <iostream> #include <fstream> using namespace std; int main() { ofstream myfile; myfile.open("cpp.txt"); while (true) { myfile << "Writing this to a file Writing this to a file n"; } myfile.close(); }

这在不到10秒的时间内创build了一个〜6 GB的文本文件。

是什么让这个C + +代码如此之快,和/或这个bash脚本如此之慢?

从内部脚本获取命令输出的日志不能按预期工作

在具有重复文件名的目录中移动多个文件

按bash中的多列进行sorting

如何使用剪切输出不同格式的初始行?

无法在PHP中运行bash脚本

这有几个原因。

首先, 解释执行环境(比如bash , perl和non-JITed lua和python等)通常比编写不好的编译程序( C , C++等)慢得多。

其次,注意你的bash代码是多么的碎片化 – 它只是写一行到一个文件,然后再写一个,依此类推。 另一方面,您的C ++程序执行缓冲写入 *** 作 – 即使没有您的直接努力。 如果你替换,你可能会看到运行速度有多慢

myfile << "Writing this to a file Writing this to a file n";

myfile << "Writing this to a file Writing this to a file" << endl;

有关如何在C ++中实现流的更多信息,以及为什么n与endl不同,请参阅有关C ++的任何参考文档。

第三,正如评论所证明的,你的bash脚本为每一行执行目标文件的打开/关闭。 这意味着其本身的性能开销很大 – 想象一下myfile.open和myfile.close移动到循环体内部!

正如其他人已经指出的那样,这是因为您正在打开和关闭您在脚本中编写的每一行文件(并且在编译C ++时解释shell脚本)。 例如,您可以批量写入,然后写入一次

MSG="something" logfile="test.txt" ( for i in {1..10000}; do echo $MSG done ) >> $logfile

这将写入消息10K次,但只打开日志一次。

编译与解释语言

在C ++编译时,Bash被解释。 只是这使得它快了很多

总结

以上是内存溢出为你收集整理的C ++比Bash脚本写入文本文件快得多全部内容,希望文章能够帮你解决C ++比Bash脚本写入文本文件快得多所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1282355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存