C# 中 for和foreach 性能比较,提高编程性能

From: http://www.cnblogs.com/yzxchoice/archive/2007/12/15/995949.html

在很多情况下for和foreach具有同样的功能,选择for还是foreach很多人可能都是看自己的喜好,本测试试图通过 来真是测试数据来比较他们的执行效率。希望能给大家对他们的时候带来一些帮助。 
测试环境:  
    硬件环境:   PIII800 + CPU456
    软件环境:   VisualStudio.Net  + C#
测试用例:
    利用结果集来存放记录,初始化对结果集添加记录
    分别对记录数为10000,100000,1000000条记录的时候进行采样分析
    关键测试对比代码如下,功能完全一样:
    //foreach开始时间
   datetime3 = System.DateTime.Now.TimeOfDay.ToString();
   foreach(DataRow row in relationData.Tables[RelationData.RELATIONINFO_TABLE].Rows)
 buffer = row[RelationData.PK_TABLE_NAME].ToString();
   datetime4 = System.DateTime.Now.TimeOfDay.ToString();
   //for开始时间
   datetime5 = System.DateTime.Now.TimeOfDay.ToString();
   for(int j=0;j<1000000;j++)
         buffer = relationData.Tables[RelationData.RELATIONINFO_TABLE].Rows[j][RelationData.PK_TABLE_NAME].ToString();
   datetime6 = System.DateTime.Now.TimeOfDay.ToString();
 
测试结果:
   10000条记录时:
         foreach读取时间:16:29:34.2577584 
         foreach结束时间:16:29:34.2677728 
         for读取开始时间:16:29:34.2677728 
         for读取结束时间:16:29:34.2878016
   100000条记录时:
         foreach读取时间:16:31:10.1055808 
         foreach结束时间:16:31:10.1957104 
         for读取开始时间:16:31:10.1957104 
         for读取结束时间:16:31:10.4460704
   1000000条记录时:
         foreach读取时间:16:33:12.6217504 
         foreach结束时间:16:33:13.6332048 
         for读取开始时间:16:33:13.6332048 
         for读取结束时间:16:33:18.7906208
结果分析:
   1)对于10000条记录可以看出
         foreach用了 0.0100144  
         for循环用了0.0300432 
         foreach所花的时间正好是for循环的 1/3 
   2)对于100000条记录可以看出
         foreach用了0.0901296   
         for循环用了0.2503600
         foreach所花的时间是for循环的 36%
   3)对于1000000条记录结果可以看出
         foreach用了1.0114544   
         for循环用了4.1574160
         foreach所花的时间是for循环的 25%
    通过对这些测试结果的分析,可以看出相对于原来的for语句foreach具有
更好的执行效率,foreach的平均花费时间只有for30%。通过测试结果在for和foreach都可以使用的情况下,我 们推荐使用效率更高的foreach.在测试同时
我们附加的发现,用for写入数据时间大约是读取数据时间的10倍左右

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AES与RSA混合加密完整实例

前段时间看到一篇文章讲如何保证API调用时数据的安全性&#xff08;传送门&#xff1a;https://blog.csdn.net/ityouknow/article/details/80603617&#xff09;&#xff0c;文中讲到利用RSA来加密传输AES的秘钥&#xff0c;用AES来加密数据&#xff0c;并提供如下思路&#xf…

Linux: 两个USB摄像头的数据采集问题

引子&#xff1a; 课题需要&#xff0c;同时采集两个摄像头数据&#xff0c;频率不高&#xff0c;但要同时。中间遇到的问题&#xff0c;唉一言难尽啊&#xff01; 为了图省事使用UVC摄像头&#xff0c;但是板子是USB1.1接口的&#xff0c;故挑选兼容USB1.1的UVC驱动的摄像头&…

获取指定日期的常用前后节点(月初月末周一周末等等)

获取指定日期的常用前后节点&#xff08;月初月末周一周末等等&#xff09; 原文:获取指定日期的常用前后节点&#xff08;月初月末周一周末等等&#xff09;注&#xff1a;周节点方面是根据中国习惯&#xff0c;视周一为起&#xff0c;周日为末。 /*-------------------------…

DB2在linux安装

linux下安装DB2的详细步骤第一步下载db2v8.1数据包,IBM网站有了,但是要钱了,呵呵第二步把下载下来的包(名称有可能是:DB2_V81_PE_LNX_32_NLV.tar)放进opt目录第三步用命令解压DB2_V81_PE_LNX_32_NLV.tar如下:linux:~#cd /optlinux:/opt # tar -xvf DB2_V81_PE_LNX_32_NLV.tar第…

封送处理您的数据:利用 COM 和 Windows 2000 的高效传输数据的技术

From: http://blog.csdn.net/zhoujianhei/article/details/1844319 摘要 您所选择的数据传输方式在分布式应用程序中是非常重要的。Windows 2000 提供了几种新的特性&#xff0c;可以更加高效地进行数据传输。轻量级的处理程序使得您能够编写智能代理&#xff0c;它们能够缓存结…

Linux:驱动程序直接编译到内核(源自国嵌的视频教学)

引子&#xff1a;前面的文章实现了可加载的内核模块&#xff0c;通过这个内核模块实现对PWM定时器的控制和中断处理程序的注册。这里讨论一下将内核模块直接编译进内核的过程&#xff0c;首先声明来源于国嵌的视频教学。 其实很简单&#xff0c;第一步把冰箱门打开...&#xf…

(转)mysql基础命令

Sql代码 asc 按升序排列 desc 按降序排列 下列语句部分是Mssql语句&#xff0c;不可以在access中使用。 SQL分类&#xff1a; DDL—数据定义语言(CREATE&#xff0c;ALTER&#xff0c;DROP&#xff0c;DECLARE) DML—数据操纵语言(SELECT&#xff0c;DELETE&#xff0c;UPDATE&…

JQuery 对控件的事件操作

JQuery是非常棒的js类库&#xff0c;有丰富的UI库和插件&#xff0c;不过我钟爱他的是他的选择器&#xff0c;感觉其他功能有时跟后台人员距离很远&#xff0c;所以一般我也只使用一下他的选择器。 今天突然对他的事件产生了兴趣&#xff0c;先前也碰到过&#xff0c;也没整理&…

搭建VS2008+OpenCV2.1开发环境

引子&#xff1a;如题&#xff08;非原创&#xff0c;非转载&#xff0c;非翻译&#xff09;。其实本菜鸟很纠结于CSDN博客文章的分类&#xff1a;原创&#xff1b;转载&#xff1b;翻译。菜鸟以博客备忘&#xff0c;首先Google&#xff0c;然后试&#xff0c;最后写博客&#…

repalce

1、replace基本用法 <script>/*要求将字符串中所有的a全部用A代替*/var str "javascript is great script language!";//只会将第一个匹配到的a替换成Aconsole.log(str.replace("a", "A")); // > jAvascript is great script language…

Win8环境下 IIS6部署MVC网站出现的无法显示此网页错误

在Win7环境下做好的网站&#xff0c;新的Win8环境发布出现如下图错误&#xff1a; 解决方法如下&#xff1a; 运行&#xff1a; 转载于:https://www.cnblogs.com/xiashenbin/p/4098274.html

软件质量管理之痛

相信不少软件开发公司都存在质量管理部门。而且&#xff0c;如果一个公司稍微正规的话,一定会使用一个缺陷跟踪软件系统&#xff0c;比如开源的Bugzilla&#xff0c;或是IBM的ClearQuest等等。那质量管理部门是如何跟踪和控制软件质量的呢&#xff1f;毫无疑问&#xff0c;需要…

COM、COM+和DCOM的定义和区别

From:http://zouyou1986.blog.163.com/blog/static/1772625920105461931335/ 解释COM、COM和DCOM的定义和区别&#xff1f; COM是组件对象模型,是实现3/N层应用的基础,它的目的就是组件化,应用程序分层.DCOM是分布式的COM,也就说可以远程的创建,最初它利用远程自动化来实现,用…

OpenCV:SURF算法浅析

引子&#xff1a; 课题需要SURF特征提取算法&#xff0c;在运动中提取摄像头图像中的特征点&#xff0c;并进行跟踪匹配&#xff0c;以此估计运动状态。开始找到了SIFT算法&#xff0c;SIFT特征提取具有极强的适应能力&#xff0c;但运算量稍大&#xff0c;后来就有了SURF特征提…

Codeforces Round #277(Div 2) A、B、C、D、E题解

转载请注明出处&#xff1a; http://www.cnblogs.com/fraud/ ——by fraud A. Calculating Function 水题&#xff0c;判个奇偶即可 1 #include <iostream>2 #include <sstream>3 #include <ios>4 #include <iomanip>5 #include <functio…

Vue 中使用watch监听$route 无效问题

Vue 中使用watch监听$route失效问题&#xff01; 今天在项目操作中发现一个问题&#xff0c;在watch里面监听$route变化&#xff0c;发现并没有监听到&#xff0c;查阅了一些资料最终解决&#xff0c;现写出与大家共同分享&#xff0c;也忘出现此问题的同学也能顺利解决 路由词…