进行以下测试后:
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函数,这是怎么可能的呢?我有什么遗漏了吗?
非常感谢您提出的任何想法和建议。
printf
所做的缓冲(正如 Paul 所指出的)是其写入文件时的主要优势。 - Mike Dunlaveyputs
应该会更快。 - Jens Gustedt