我试图在 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/