Возможный дубликат:
C ++: «std :: endl» против «\ n»
У меня есть простая программа, которую я протестировал, и я понимаю, что endl
наносит ущерб моей программе. Используя endl, моя программа работала в Более 100 мс работая с '\n'
время упало до ~ 50мс.
Может кто-нибудь сказать, почему такая разница?
Постскриптум Я читал другие посты, которые как-то объясняли, что каждый из них делает, но делает std::flush
действительно так много времени?
Или может быть другое возможное объяснение?
endl
имеет очень дорого flush()
операция
27.7.3.8 Стандартные манипуляторы basic_ostream [ostream.manip]
namespace std {
template <class charT, class traits>
basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);
}
1 Effects: Calls os.put(os.widen(’\n’)), then os.flush().
2 Returns: os.
std::endl
пишет новую строку, и очищает буфер. Как вы обнаружили, очистка может быть довольно дорогой операцией.