有没有人测试过endl的效率比'\n'低多少么?
编译器会把endl优化成'\n'么?感觉应该不行吧?
[解决办法]
确实低很多。。。。
[解决办法]
endl操作远比'\n'要多。
[解决办法]
想想 c++ 相对来说是兼容c的 ,但是c却不能兼容c++
就知道了endl 要处理的事情 比'\n'多多了
[解决办法]
std::endl会flush
vc++ 2012
_CRTIMP2_PURE inline basic_ostream<char, char_traits<char> >&
__CLRCALL_OR_CDECL endl(basic_ostream<char, char_traits<char> >& _Ostr)
{// insert newline and flush byte stream
_Ostr.put('\n');
_Ostr.flush();
return (_Ostr);
}
[解决办法]
+1
[解决办法]
endl会刷新IO缓冲区,需要进行系统调用。\n只是在IO缓冲区放入一个字符。endl的速度会比\n慢很多。
[解决办法]
干嘛要比较这两个的效率,两个做的事情都不一样,虽然结果看起来一样
[解决办法]
确实使用endl比使用"\n"复杂多了。。可以看下源码
[解决办法]
endl相当于 '\n' + fflush。
endl是用户空间和内核空间的交互,频繁的话,会显著降低效率