C++ 输入性能

标签 c++ performance profiling iostream stdio

我试图在 InterviewStreet 上解决一个问题。一段时间后,我确定我实际上花了大部分时间阅读输入。这个特定的问题有很多输入,所以这在一定程度上是有道理的。没有意义的是为什么不同的输入方法具有如此不同的性能:

最初我有:

std::string command;
std::cin >> command;

替换它使它明显更快:

char command[5];
cin.ignore();
cin.read(command, 5);

重写所有内容以使用 scanf 使其更快

char command;
scanf("get_%c", &command);

总而言之,我将阅读输入的时间减少了大约 1/3。

我想知道这些不同方法之间的性能差异。此外,我想知道为什么使用 gprof 没有突出显示我在 I/O 上花费的时间,而是似乎将责任归咎于我的算法。

最佳答案

这些例程有很大差异,因为控制台输入速度几乎无关紧要。

而它所做的(Unix shell)代码是用 C 语言编写的,直接从标准输入设备读取并且非常高效。

关于C++ 输入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9099058/

相关文章:

c++ - 十进制值:cout << dec << boost::this_thread::get_id()

c++ - 如何在C++中有效地存储数据

python - 提高掩蔽性能,然后加权平均

html - 在 Dart 中使用 Polymer Data-Binding 将大量元素插入 DOM 会导致延迟

c++ - 使按位函数适用于任何类型的整数输入 C++ 的最佳方法是什么?

c++ - 跨二进制模块实现单例

c++ - 仅从 std::cin 获取第一个值

java - jProfiler 需要多少内存来分析大小为 X 的堆转储?

javascript - Node.js中的内存泄漏-如何分析分配树/根?

c - 如何分析/识别紧密处理循环中的缓慢步骤?