void perfprint(unsigned int count)
{
char a[100] = "fosjkdfjlsjdflw0304802";
for(unsigned int i = 0;i<count;++i)
{
printf("%s", a);
}
}
void perfcout(unsigned int count)
{
char a[100] = "fosjkdfjlsjdflw0304802";
for(unsigned int i = 0;i<count;++i)
{
cout << a;
}
}
Окружающей среду: C++, VS 2010, Windows 7, 32-бит, Core-i7, 4 Гб, 3,40 ГГцPrintf против производительности соиЬ
Я проверил обе функцию с count = 10000
для 5
раз каждых. Измерение производительности с использованием QueryPerformanceCounter
.
perfprint>~850
миллисекунды (Avg 5 серий)
perfcout>~9000
миллисекунды (Avg 5 серий)
Означает ли это Printf является ~10x
быстрее, чем соиЬ
Edit:
С/Ox,/Ot, Отладочная информация отсутствует в сборке выпуска
и std::ios_base::sync_with_stdio(false);
в perfcout методом, результат одинаков для cout
т.е. ~9000 millisecs
Edit 2:
В заключение следует сказать, cout
быстрее, чем printf
. Причина наблюдений выше была обусловлена выходом консоли. При перенаправлении вывода в файл все обернулось на голову!
Нет, это означает, что вы не понимаете, как синхронизируются iostreams и как это влияет на их скорость. Попробуйте вызвать 'std :: ios_base :: sync_with_stdio (false)' в начале 'perfcout'. – user657267
Технически дубликат http://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python – CodeMouse92
Можете ли вы запустить тест при добавлении std: : ios_base :: sync_with_stdio (ложь)? –