C# for 和 foreach的执行效率
for和foreach哪个执行效率快,相信很多人都会说当然是foreach快啊,在我实验之前我也是这么认为的,直到今天。费话不多说,下面是测试的结果,区分Debug和Release,数据采用int[],List<int>,Person[],List<Pserson>,DataTable:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Debug下
初始化5千万整型数据...
初始化整型数据完成。耗时:650
使用For遍历10次整型数组,求平均时间...
For循环整型数组平均时间:202.9
使用Foreach遍历10次整型数组,求平均时间...
Foreach循环整型数组平均时间:236.8
使用For遍历10次整型List,求平均时间...
For循环整型List平均时间:360.9
使用Foreach遍历10次整型List,求平均时间...
Foreach循环整型List平均时间:269
---------------------------------------
初始化5千万Object数据...
初始化Object数据完成。耗时:193656
使用For遍历10次Object数组,求平均时间...
For循环Object数组平均时间:930
使用Foreach遍历10次Object数组,求平均时间...
Foreach循环Object数组平均时间:1130.9
使用For遍历10次ObjectList,求平均时间...
For循环ObjectList平均时间:923.7
使用Foreach遍历10次ObjectList,求平均时间...
Foreach循环ObjectList平均时间:1282.8
---------------------------------------
初始化2千万DataTable数据...
初始化时间:115291
使用For遍历10次DataTable,求平均时间...
For循环DataTable平均时间:12014.4
使用Foreach遍历10次DataTable,求平均时间...
Foreach循环DataTable平均时间:3804.4
Release====================================================================================================================
初始化5千万整型数据...
初始化整型数据完成。耗时:513
使用For遍历10次整型数组,求平均时间...
For循环整型数组平均时间:41.1
使用Foreach遍历10次整型数组,求平均时间...
Foreach循环整型数组平均时间:46.4
使用For遍历10次整型List,求平均时间...
For循环整型List平均时间:168.9
使用Foreach遍历10次整型List,求平均时间...
Foreach循环整型List平均时间:165.3
-------------------------------------------------------
初始化5千万Object数据...
初始化Object数据完成。耗时:157782
使用For遍历10次Object数组,求平均时间...
For循环Object数组平均时间:38
使用Foreach遍历10次Object数组,求平均时间...
Foreach循环Object数组平均时间:490.2
使用For遍历10次ObjectList,求平均时间...
For循环ObjectList平均时间:365.5
使用Foreach遍历10次ObjectList,求平均时间...
Foreach循环ObjectList平均时间:726.6
----------------------------------------------------
初始化2千万DataTable数据...
初始化时间:114483
使用For遍历10次DataTable,求平均时间...
For循环DataTable平均时间:12059
使用Foreach遍历10次DataTable,求平均时间...
Foreach循环DataTable平均时间:3891.8
++++++++++++++++++++++++++++++++++++++++++++++
由此可以看出不同的数据结构,for和foreach执行效率是不一样的,不能说哪个一定快。有些数据结构差别不大,有些差别就比较大。
以上测试条件为:
电脑型号 X64 兼容 台式电脑
操作系统 Windows 7 旗舰版 64位 ( DirectX 11 )
处理器 AMD FX -8320 Eight-Core 八核
主板 华硕 M5A78L-M LX3 PLUS ( AMD 780G/780V/790GX/890GX )
内存 8 GB ( 金士顿 DDR3 1600MHz )
C# for 和 foreach的执行效率的更多相关文章
- php代码优化系列 -- array_walk 和 foreach, for 的效率的比较
实验是我学习计算机科学的一个重要方法,计算机科学不是简单的智力游戏,它本质上来说不是一门科学,而是一个改造世界的工具.数学方法和实验方法是计算机研究的基本方法,也是我们学习的基本方法,数学锻炼我们的思 ...
- Snapman系统中TCC执行效率和C#执行效率对比
Snapman集合了TCC编译器可以直接编译执行C语言脚本,其脚本执行效率和C#编译程序进行效率对比,包括下面4方面: 1.函数执行效率 2.数字转换成字符串 3.字符串的叠加 4.MD5算法 这是C ...
- 五十个小技巧提高PHP执行效率
在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...
- php代码优化 -- array_walk 和 foreach, for 的效率的比较
<?php /** * array_walk 和 foreach, for 的效率的比较. * 我们要测试的是foreach, for, 和 array_walk的效率的问题. */ //产生一 ...
- PHP对接口执行效率慢的优化
PHP对接口执行效率慢的优化 PHP对接口执行效率慢的优化 造成执行效率低的原因可以由很多方面找原因 从代码层面,代码质量低,执行效率也会有很大影响的. 从硬件方面,服务器配置低,服务器配置是基础,这 ...
- 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...
- SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因
复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...
- SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率
为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者 ...
- SQL执行效率和性能测试方法总结
对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...
随机推荐
- 网络协议 4 - 交换机与 VLAN
上一次,我们通过公司需求,认识了如何通过物理层和链路层组建一个公司局域网.今天,我们切换到复杂点的办公室场景. 在这个场景里,就不像在大学教室那样,搞几根网线,拉一拉,扯一扯就可以了.一个办公 ...
- installp 操作
installp 软件安装和升级工具 1.查看某个已应用更可被提交或拒绝的文件集) installp -s 2. 应用更新TCP/IP软件( /usr/sys/inst.images ) ...
- 分享到twitter,facebook,google,yahoo,linkedined,msn
编辑器加载中... 1. 分享到twitter的代码” title=”分享到 Twitter” target=”_blank” rel=”nofollow”>Twitter 2. 分享到Face ...
- oracle 查询某个时间段数据
SELECT * FROM DRP_MARKET_PRODUCT T WHERE T.CREATEDTIME BETWEEN TO_DATE('2016-10-08 12:30', 'yyyy-mm- ...
- 【CS Round #37 (Div. 2 only) A】Boring Number
[Link]:https://csacademy.com/contest/round-37/task/boring-number/ [Description] 让你找离平均数最近的一个数的下标; [S ...
- HRBUST 1818 石子合并问题--直线版
石子合并问题--直线版 Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HRBUST. Original ...
- PHP 使用Apache 中的ab 測试站点的压力性能
打开Apacheserver的安装路径(我用的是 WampServer),在bin文件夹中有一个ab.exe的可运行程序,它就是要介绍的压力測试工具. watermark/2/text/aHR0cDo ...
- jquery autocomplete文本自己主动补全
文本自己主动补全功能确实非常有用. 先看下简单的效果:(样式不咋会写) 以下介绍几种: 1:jqery-actocomplete.js 这个网上有个写好的实例,上面挺具体的,能够下来执行下就清楚了就不 ...
- Linux经常使用命令(十六) - whereis
whereis命令仅仅能用于程序名的搜索(程序安装在哪?).并且仅仅搜索二进制文件(參数-b).man说明文件(參数-m)和源码文件(參数-s). 假设省略參数,则返回全部信息. 和find相比.wh ...
- 比MD5 和HMAC还要安全的加密 - MD5 加时间戳
//1.给一个字符串进行MD5加密 NSString *passKey = @"myapp"; passKey = [passKey md5String]; //2.对第一步中得到 ...