普通变量与寄存器变量速度对比文档格式.docx

上传人:b****2 文档编号:14730053 上传时间:2022-10-24 格式:DOCX 页数:9 大小:16.39KB
下载 相关 举报
普通变量与寄存器变量速度对比文档格式.docx_第1页
第1页 / 共9页
普通变量与寄存器变量速度对比文档格式.docx_第2页
第2页 / 共9页
普通变量与寄存器变量速度对比文档格式.docx_第3页
第3页 / 共9页
普通变量与寄存器变量速度对比文档格式.docx_第4页
第4页 / 共9页
普通变量与寄存器变量速度对比文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

普通变量与寄存器变量速度对比文档格式.docx

《普通变量与寄存器变量速度对比文档格式.docx》由会员分享,可在线阅读,更多相关《普通变量与寄存器变量速度对比文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

普通变量与寄存器变量速度对比文档格式.docx

对于C程序,寄存器变量是不能取址的:

几种线程本地存储变量和普通变量的性能比较God一直致力于研究高并发服务端的开发,这次要优化的是libGod库中的线程本地存储变量,线程本地存储变量访问非常频繁,优化后库的性能应该会提高不少。

已知的线程本地存储方法有boost中的thread_specific_ptr类,gcc中的__thread关键字,pthread中的pthread_getspecific函数。

这次测试这3中本地存储以及普通变量之间的性能差别,代码如下:

#include《iostream》

#include《stdio.h》

#include《pthread.h》

#include《boost/thread/thread.hpp》

#include《boost/thread/tss.hpp》

usingnamespacestd;

classC{

public:

C(inta){

m_a=a;

printf(“C()%d\n”,m_a);

}

~C(){

printf(“~C()%d\n”,m_a);

private:

intm_a;

};

#defineTM3

#ifTM==1

boost:

thread_specific_ptr《C》pc;

constchar*testType=“boost”;

#elifTM==2

__threadC*pc;

constchar*testType=“__thread”;

#elifTM==3

pthread_key_tpc;

constchar*testType=“pthread”;

#else

C*pc;

constchar*testType=“normal”;

#endif

voidboostthreadFunc(){

pc.reset(newC(10));

pc=newC(20);

if(pthread_key_create("

cout《《“pthread_key_create”《《endl;

return;

if(pthread_setspecific(pc,newC(30))){

cout《《“pthread_setspecific”《《endl;

intswitches=5000000;

inti=switches;

structtimevaltm_start,tm_end;

getTImeofday(

while(i--){

C*c1=pc.get();

C*c2=pc.get();

C*c3=pc.get();

C*c4=pc.get();

C*c5=pc.get();

C*c6=pc.get();

C*c7=pc.get();

C*c8=pc.get();

C*c9=pc.get();

C*c10=pc.get();

C*c11=pc.get();

C*c12=pc.get();

C*c13=pc.get();

C*c14=pc.get();

C*c15=pc.get();

C*c16=pc.get();

C*c17=pc.get();

C*c18=pc.get();

C*c19=pc.get();

C*c20=pc.get();

C*c21=pc.get();

C*c22=pc.get();

C*c23=pc.get();

C*c24=pc.get();

C*c25=pc.get();

C*c26=pc.get();

C*c27=pc.get();

C*c28=pc.get();

C*c29=pc.get();

C*c30=pc.get();

C*c31=pc.get();

C*c32=pc.get();

C*c33=pc.get();

C*c34=pc.get();

C*c35=pc.get();

C*c36=pc.get();

C*c37=pc.get();

C*c38=pc.get();

C*c39=pc.get();

C*c40=pc.get();

C*c1=pc;

C*c2=pc;

C*c3=pc;

C*c4=pc;

C*c5=pc;

C*c6=pc;

C*c7=pc;

C*c8=pc;

C*c9=pc;

C*c10=pc;

C*c11=pc;

C*c12=pc;

C*c13=pc;

C*c14=pc;

C*c15=pc;

C*c16=pc;

C*c17=pc;

C*c18=pc;

C*c19=pc;

C*c20=pc;

C*c21=pc;

C*c22=pc;

C*c23=pc;

C*c24=pc;

C*c25=pc;

C*c26=pc;

C*c27=pc;

C*c28=pc;

C*c29=pc;

C*c30=pc;

C*c31=pc;

C*c32=pc;

C*c33=pc;

C*c34=pc;

C*c35=pc;

C*c36=pc;

C*c37=pc;

C*c38=pc;

C*c39=pc;

C*c40=pc;

C*c1=(C*)pthread_getspecific(pc);

C*c2=(C*)pthread_getspecific(pc);

C*c3=(C*)pthread_getspecific(pc);

C*c4=(C*)pthread_getspecific(pc);

C*c5=(C*)pthread_getspecific(pc);

C*c6=(C*)pthread_getspecific(pc);

C*c7=(C*)pthread_getspecific(pc);

C*c8=(C*)pthread_getspecific(pc);

C*c9=(C*)pthread_getspecific(pc);

C*c10=(C*)pthread_getspecific(pc);

C*c11=(C*)pthread_getspecific(pc);

C*c12=(C*)pthread_getspecific(pc);

C*c13=(C*)pthread_getspecific(pc);

C*c14=(C*)pthread_getspecific(pc);

C*c15=(C*)pthread_getspecific(pc);

C*c16=(C*)pthread_getspecific(pc);

C*c17=(C*)pthread_getspecific(pc);

C*c18=(C*)pthread_getspecific(pc);

C*c19=(C*)pthread_getspecific(pc);

C*c20=(C*)pthread_getspecific(pc);

C*c21=(C*)pthread_getspecific(pc);

C*c22=(C*)pthread_getspecific(pc);

C*c23=(C*)pthread_getspecific(pc);

C*c24=(C*)pthread_getspecific(pc);

C*c25=(C*)pthread_getspecific(pc);

C*c26=(C*)pthread_getspecific(pc);

C*c27=(C*)pthread_getspecific(pc);

C*c28=(C*)pthread_getspecific(pc);

C*c29=(C*)pthread_getspecific(pc);

C*c30=(C*)pthread_getspecific(pc);

C*c31=(C*)pthread_getspecific(pc);

C*c32=(C*)pthread_getspecific(pc);

C*c33=(C*)pthread_getspecific(pc);

C*c34=(C*)pthread_getspecific(pc);

C*c35=(C*)pthread_getspecific(pc);

C*c36=(C*)pthread_getspecific(pc);

C*c37=(C*)pthread_getspecific(pc);

C*c38=(C*)pthread_getspecific(pc);

C*c39=(C*)pthread_getspecific(pc);

C*c40=(C*)pthread_getspecific(pc);

C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1