对threadpool的性能测试

自己编写的threadpool(http://www.oschina.net/code/snippet_102078_2072或者http://jaff20071234.download.csdn.net/),没有正规的文档,只能自己编写程序进行性能测试了。

 

1。

创建一个threadmanage对象只含有10个线程,同时运行10000个任务,每个任务的工作是循环50次打印字符串。

创建一个threadmanage对象只含有100个线程,同时运行10000个任务,每个任务的工作是循环50次打印字符串。

两次运行的时间差距不大,均需要30多秒,说明此时受到了处理器资源的限制。

测试代码如下:

CThreadManage threadManage(100); _sleep(100); //create 10000 tasks to execute in this threadpool. CTask task[10000]; int i = 0; char *data[10000]; for(i = 0; i < 10000; i++) { data[i] = (char *)malloc(15); sprintf(data[i],"task%d",i); threadManage.Run(&task[i],data[i]); _sleep(1); } _sleep(1000); clock_t m_sec = clock(); printf("costing time is :%ld",m_sec); 

2。

创建一个threadmanage对象只含有10个线程,同时运行10000个任务,每个任务的工作是循环50次打印字符串。

另外只在一个主线程中运行50*10000次打印输出,如果运行同样的任务,按照上面的思路去理解,需要的时间应该要少,

因为是直接调用运行,不需要经过多次函数调用,信号等待,和任务等待等等。

但是从另外一个角度,此时只有一个线程运行,运用的处理器资源少,所以需要时间要长,结果是45秒左右。

测试代码如下:

char *data = "thread"; int i = 0; while(i < 50 * 10000) { fprintf(stdout,"%s-%d is running./n",data,i); i++; } clock_t m_sec = clock(); printf("costing time is :%ld",m_sec); 

随便测试了一个100000个任务时,就恐怖了,从上完厕所回来,只执行了20000个,哎,分布式的服务器才会满足n多用户

时的需求吧 ~~~

你可能感兴趣的:(thread,工作,测试,服务器,文档,任务)