#include <cstdio>
#include <ctime>
#include <fstream>
#include <iostream>
using namespace std;
int foo1()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < 1000000; i++)
printf("a");
t2 = clock();
return t2 - t1;
}
int foo2()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < 1000000; i++)
cout << "a";
t2 = clock();
return t2 - t1;
}
int foo3()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < 1000000; i++)
fputc('a',stdout);
t2 = clock();
return t2 - t1;
}
int main()
{
int d1,d2,d3;
d1 = foo1();
d2 = foo2();
d3 = foo3();
cout << endl << endl << "cout " << d2 << endl;
cout << "printf " << d1 << endl;
cout << "fputc " << d3 << endl;
return 0;
}
$ cat time-test.cpp
#define __USE_MISC
#include <cstdio>
#include <ctime>
#include <fstream>
#include <iostream>
using namespace std;
const int TIMES = 1000000000;
int test_printf()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) printf("a");
t2 = clock();
return t2 - t1;
}
int test_cout()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) cout << "a";
t2 = clock();
return t2 - t1;
}
int test_fputc()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) fputc('a',stdout);
t2 = clock();
return t2 - t1;
}
int test_putc()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) putc('a',stdout);
t2 = clock();
return t2 - t1;
}
int test_fputc_unlocked()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) fputc_unlocked('a',stdout);
t2 = clock();
return t2 - t1;
}
int main()
{
int d1,d2,d3,d4,d5;
d1 = test_printf();
d2 = test_cout();
d3 = test_fputc();
d4 = test_putc();
d5 = test_fputc_unlocked();
cerr << "printf " << d1 << endl;
cerr << "cout " << d2 << endl;
cerr << "fputc " << d3 << endl;
cerr << "putc " << d4 << endl;
cerr << "fputc_unlocked " << d5 << endl;
return 0;
}
$ g++ time-test.cpp
$ ./a.out > /dev/null
printf 13570000
cout 69060000
fputc 12650000
putc 11910000
fputc_unlocked 5180000
quixadhal@andropov:~$ ./bench >/dev/null
printf 5400000
cout 24360000
fputc 5540000
putc 5550000
fputc_unlocked 2280000
quixadhal@andropov:~$ ./bench 2>/dev/null
printf 94400000
cout 138420000
fputc 95260000
putc 94450000
fputc_unlocked 91950000
int test_printf_c()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) fprintf(stdout, "%c", 'a');
t2 = clock();
return t2 - t1;
}
int test_printf_s()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) fprintf(stdout, "%s", "a");
t2 = clock();
return t2 - t1;
}
int test_putchar()
{
clock_t t1,t2;
t1 = clock();
for(int i = 0; i < TIMES; i++) putchar('a');
t2 = clock();
return t2 - t1;
}
quixadhal@andropov:~$ ./bench >/dev/null
cout 24040000
fputc 5540000
putc 5540000
putchar 5410000
fputc_unlocked 2290000
printf 5490000
printf %s 5570000
printf %c 5540000