write или printf, что быстрее?

После выполнения следующей проверки:

for( i = 0; i < 3000000; i++ ) {
    printf( "Test string\n" );
}

for( i = 0; i < 3000000; i++ ) {
    write( STDOUT_FILENO, "Test string\n", strlen( "Test string\n" ) );
}

оказывается, что вызовы printf занимает в общей сложности 3 секунды, в то время как вызовы write занимают колоссальные 46 секунд.Как, со всей причудливой магией форматирования, которую делает printf, и тем фактом, что printfсам вызывает write, возможно ли это? Есть ли что-то, чего мне не хватает?

Любые мысли и комментарии приветствуются.

12
задан Jens Gustedt 26 June 2012 в 18:19
поделиться