//测试代码:
#define CNT 3000
void test_console()
{
String s(L"I love my syster forevey!!!\n");
std::string s1("I love my syster forevey!!!\n");
double time1, time2, time3;
Clocker clock;
for(int i = 0; i < CNT; ++i)
puts("I love my syster forevey!!!");
time1 = clock.elapse();
clock.restart();
for(int i = 0; i < CNT; ++i)
console << s;
time2 = clock.elapse();
clock.restart();
for(int i = 0; i < CNT; ++i)
std::cout << s1;
time3 = clock.elapse();
printf("puts use %.3f\n", time1);
printf("write use %.3f\n", time2);
printf("std::cout use %.3f\n", time3);
}
测试C库的puts,和win32 API writeConsole,以及C++ 的cout输出同一个字符串3000次,在i5-5200(2.20GHZ)
本本+VS2010的测试结果:
如上图所示,结果是API的速度快得让人无语,最慢的C++的cout,打算重写控制台输出库了。
#define CNT 3000
void test_console()
{
String s(L"I love my syster forevey!!!\n");
std::string s1("I love my syster forevey!!!\n");
double time1, time2, time3;
Clocker clock;
for(int i = 0; i < CNT; ++i)
puts("I love my syster forevey!!!");
time1 = clock.elapse();
clock.restart();
for(int i = 0; i < CNT; ++i)
console << s;
time2 = clock.elapse();
clock.restart();
for(int i = 0; i < CNT; ++i)
std::cout << s1;
time3 = clock.elapse();
printf("puts use %.3f\n", time1);
printf("write use %.3f\n", time2);
printf("std::cout use %.3f\n", time3);
}
测试C库的puts,和win32 API writeConsole,以及C++ 的cout输出同一个字符串3000次,在i5-5200(2.20GHZ)
本本+VS2010的测试结果:
如上图所示,结果是API的速度快得让人无语,最慢的C++的cout,打算重写控制台输出库了。