您不是在比较同一件事。Java程序读取行,以换行符开头,而C ++程序读取空格分隔的“单词”,这是额外的工作。
尝试
istream::getline。
后来
您也可以尝试执行基本的读取操作以读取字节数组并扫描换行符。
甚至以后
在我的旧Linux笔记本上,与C ++
getline相比,jdk1.7.0_21和不告诉我它很旧的4.3.3花费的时间大约相同。(我们已经确定,阅读单词的速度较慢。)-O0和-O2之间没有太大区别,考虑到循环中代码的简单性,这也不足为奇。
最后的 提示正如我所建议的那样,LEN。1MB的fin.read(buffer,LEN)并使用memchr扫描’
n’会导致速度再提高约20%,这使得C(现在)比Java快。



