- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HYPERLINK /wuchang/archive/2006/12/07/584997.html 托管代码和非托管代码效率的对比。
2006-12-07 10:14 by 无常, 12026 visits,? HYPERLINK /wuchang/archive/2006/12/07/584997.html 收藏,? HYPERLINK /wuchang/admin/EditPosts.aspx?postid=584997 编辑
?一直以来只知道托管代码的效率要比非托管代码低,至于低多少也没有可参考的数据。今天在 HYPERLINK / \t _blank csdn看到的 HYPERLINK / \t _blank 英特尔多核平台编程优化大赛的广告,把里面的代码下载回来,分别用非托管c/托管cpp/c#做了个简略的性能测试,不比不知道,一比吓了一跳。且看数据说话。
?
第一步:原始代码如:
/*?compute?the?potential?energy?of?a?collection?of?*//*?particles?interacting?via?pairwise?potential????*/?#include?stdio.h#include?stdlib.h#include?math.h#include?windows.h#include?time.h?#define?NPARTS?1000#define?NITER?201#define?DIMS?3?int?rand(?void?);int?computePot(void);void?initPositions(void);void?updatePositions(void);?double?r[DIMS][NPARTS];double?pot;double?distx,?disty,?distz,?dist;int?main()?{???int?i;???clock_t?start,?stop;???initPositions();???updatePositions();????start=clock();???for(?i=0;?iNITER;?i++?)?{??????pot?=?0.0;??????computePot();??????if?(i%10?==?0)?printf(%5d:?Potential:?%10.3f\n,?i,?pot);??????updatePositions();???}???stop=clock();???printf?(Seconds?=?%10.9f\n,(double)(stop-start)/?CLOCKS_PER_SEC);???int?e;???scanf(%d,e);}??void?initPositions()?{???int?i,?j;????for(?i=0;?iDIMS;?i++?)??????for(?j=0;?jNPARTS;?j++?)??????????r[i][j]?=?0.5?+?(?(double)?rand()?/?(double)?RAND_MAX?);}??void?updatePositions()?{???int?i,?j;????for(?i=0;?iDIMS;?i++?)??????for(?j=0;?jNPARTS;?j++?)?????????r[i][j]?-=?0.5?+?(?(double)?rand()?/?(double)?RAND_MAX?);}??int?computePot()?{???int?i,?j;???for(?i=0;?iNPARTS;?i++?)?{??????for(?j=0;?ji-1;?j++?)?{????????distx?=?pow(?(r[0][j]?-?r[0][i]),?2?);????????disty?=?pow(?(r[1][j]?-?r[1][i]),?2?);????????distz?=?pow(?(r[2][j]?-?r[2][i]),?2?);????????dist?=?sqrt(?distx?+?disty?+?distz?);????????pot?+=?1.0?/?dist;??????}???}???return?0;}
执行结果如下:
执行时间4.609s。
?
?第二步:托管
新建一个 C++ CLR Console Aplication,命名为mcpp。打开mcpp.cpp文件,将原始代码粘贴进来即可(代码太长这
文档评论(0)