【发布时间】:2024-01-20 23:46:01
【问题描述】:
我有一个代码,我目前在其中向终端打印大量诊断消息。有人知道这会减慢我的代码多少吗?通过将输出管道传输到文件,我是否会大大提高速度?而不是运行:
./my_program
我跑
./my_program > output.log
另外,我是否可以通过将 cout 替换为 ofstream 并直接写入文件来进一步提高速度?
编辑:假设我正在写入 /dev/shm,磁盘访问速度并不是真正的问题。
【问题讨论】:
-
我的有趣问题 +1。计时,
time ./my_program > output.log 2>&1看看你得到了什么结果,然后将其与time ./my_program > output.log 2>&1 &(后台分叉)进行比较,并使用multitail output.log查看来自另一个终端的输出。这取决于 CPU 负载、服务、进程、RAM... -
您可以对其进行分析并找出...(!)
-
我知道在 Windows 95 的旧时代,您可以按 Alt+Enter 将 DOS 框切换到文本模式,然后程序运行速度大大。
-
尝试在不同的线程上打印并释放您的主程序线程。这应该会显着提高你的表现。检查这个:superuser.com/a/312955
-
您可以通过缓冲和/或更改缓冲区大小来获得更快的控制台输出。见en.cppreference.com/w/cpp/io/c/setvbuf
标签: c++ performance printing terminal