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的执行效率的更多相关文章

  1. php代码优化系列 -- array_walk 和 foreach, for 的效率的比较

    实验是我学习计算机科学的一个重要方法,计算机科学不是简单的智力游戏,它本质上来说不是一门科学,而是一个改造世界的工具.数学方法和实验方法是计算机研究的基本方法,也是我们学习的基本方法,数学锻炼我们的思 ...

  2. Snapman系统中TCC执行效率和C#执行效率对比

    Snapman集合了TCC编译器可以直接编译执行C语言脚本,其脚本执行效率和C#编译程序进行效率对比,包括下面4方面: 1.函数执行效率 2.数字转换成字符串 3.字符串的叠加 4.MD5算法 这是C ...

  3. 五十个小技巧提高PHP执行效率

    在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...

  4. php代码优化 -- array_walk 和 foreach, for 的效率的比较

    <?php /** * array_walk 和 foreach, for 的效率的比较. * 我们要测试的是foreach, for, 和 array_walk的效率的问题. */ //产生一 ...

  5. PHP对接口执行效率慢的优化

    PHP对接口执行效率慢的优化 PHP对接口执行效率慢的优化 造成执行效率低的原因可以由很多方面找原因 从代码层面,代码质量低,执行效率也会有很大影响的. 从硬件方面,服务器配置低,服务器配置是基础,这 ...

  6. 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案

    如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...

  7. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  8. SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率

    为什么我也要说SQL Server的并行: 这几天园子里写关于SQL Server并行的文章很多,不管怎么样,都让人对并行操作有了更深刻的认识. 我想说的是:尽管并行操作可能(并不是一定)存在这样或者 ...

  9. SQL执行效率和性能测试方法总结

    对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...

随机推荐

  1. 【Django】视图系统

    目录 FBV 与 CBV 给视图加装饰器 使用装饰器装饰CBV 关于dispatch()方法 Request对象 与 Response对象 request对象 response对象 @ *** 一个视 ...

  2. react入门安装

    react的入门安装 1.react的适用方法有两种,其一是依赖在线的cdn地址: https://reactjs.org/docs/cdn-links.html 官方给的cdn地址如下 <sc ...

  3. SQL char字段类型排序

    我是做的ACCESS时候需要对字段的值进行排序,字段格式是char类型的,但是存的值是数字.现在需要对该字段进行排序. 通过查找,找到以下两种方法,记录下来. 1. 你可以转换成int型再排序 sel ...

  4. &lt;LeetCode OJ&gt; 20. Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  5. TCP/IP协议族-----20、远程登录:TELNET与SSH

  6. KendoUi中KendoDropDownList控件的使用——三级级联模块的实现

    1. 应用需求 在权限系统开发中除了以上数据表关系的设计之外.比較麻烦的地方是级联模块在页面的展示,因为设计中最多是控制到三级,因此三级级联模块的展示.编辑等页面操作是须要解决的问题,这里採用Kend ...

  7. iOS8开发~Swift(五)Swift与OC混编

    一.概要 首先看<The Swift Programming Language>中提到"Swift's compatibility with Objective-C lets y ...

  8. java 链接server上的 mongodb 出现 connect time out 问题

    异常信息 十二月 22, 2014 5:27:58 下午 com.mongodb.DBTCPConnector initDirectConnection 警告: Exception executing ...

  9. POJ 2181 贪心

    思路: 贪心 对于每个波浪 ans+=最大值-最小值 注意最后一定是选最大值 //By SiriusRen #include <cstdio> using namespace std; i ...

  10. Kinect 开发 —— 骨骼追踪(下)

    Kinect 连线游戏 在纸上将一些列数字(用一个圆点表示)从小到大用线连起来.游戏逻辑很简单,只不过我们在这里要实现的是动动手将这些点连起来,而不是用笔或者鼠标. 在开始写代码之前,需要明确定义我们 ...