惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
Google Online Security Blog
Google Online Security Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Simon Willison's Weblog
Simon Willison's Weblog
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security
S
Schneier on Security
T
Tor Project blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学
The Hacker News
The Hacker News
Hacker News - Newest:
Hacker News - Newest: "LLM"
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
S
Security @ Cisco Blogs
PCI Perspectives
PCI Perspectives
Spread Privacy
Spread Privacy
W
WeLiveSecurity
SecWiki News
SecWiki News
A
About on SuperTechFans
H
Help Net Security
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
爱范儿
爱范儿
S
Securelist
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
月光博客
月光博客
Jina AI
Jina AI
博客园 - 叶小钗
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
S
Secure Thoughts
The Cloudflare Blog
美团技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 潘胜国

Emgu学习之(一)----Emgu简介 .NET 调用c++库注意事项 网站预编译命令说明(aspnet_compiler) VS2005即时窗口 DataSet主副表关系应注意的问题 通用验证脚本 SQL SERVER小Tips AG_E_RUNTIME_METHOD : CreateFromXaml错误的及解决 [转载]Converting a bitmap to a byte array 调试web服务器无法启动 IE 7 BETA 3安装 什么是爱情【转载】 取Assembly中的资源 利用IIS压缩文件 C# 2.0泛型初试 Page常用方法 IFame的另一种表现 自动提交问题,不知道这算不算是MS的一个BUG Ajax实现两级下拉框连动的应用
for和foreach的执行效率的问题之新发现
潘胜国 · 2005-06-29 · via 博客园 - 潘胜国

看了 冰戈的文章,根据他的我也测试了一下,结果跟他差不多,但是在无意中发现,下面的代码执行结果就出人意料,目前我还不知道是原因导致这样的结果,代码如下:

        private static void  TestForForeach(int count)
        
{
            
double[] test=new double[count];
            
for(int i=0;i<count;i++)
            
{
                test[i]
=i;
            }

        
            
double sum1=0;

            DateTime start
=DateTime.Now;
            
foreach(double k in test)
            
{
                sum1
+=k;
            }

            DateTime end
=DateTime.Now;

            Console.WriteLine(
"TestForForeach2->\nForeach:开始时间{0},结束时间{1},\n相差:{2}",start,end,end-start);

        
            sum1
=0.0;

            start
=DateTime.Now;
            
for(int i=0;i<count;i++)
            
{
                sum1
+=test[i];
            }

            end
=DateTime.Now;

            Console.WriteLine(
"TestForForeach2->\nFor:开始时间{0},结束时间{1},\n相差:{2}",start,end,end-start);
        }

上面这段代码是没有什么差别的。但是下面代码,结果就会出人意料了。

        private static void  TestForForeach1(int count)
        
{
            
double[] test=new double[count];
            
for(int i=0;i<count;i++)
            
{
                test[i]
=i;
            }

        
            
double sum1=0;

            DateTime start
=DateTime.Now;
            
for(int i=0;i<count;i++)
            
{
                sum1
+=test[i];
            }

            DateTime end
=DateTime.Now;

            Console.WriteLine(
"TestForForeach1->\nFor:开始时间{0},结束时间{1},\n相差:{2}",start,end,end-start);

        
            sum1
=0.0;

            start
=DateTime.Now;
            
foreach(double k in test)
            
{
                sum1
+=k;
            }

            end
=DateTime.Now;

            Console.WriteLine(
"TestForForeach1->\nForeach:开始时间{0},结束时间{1},\n相差:{2}",start,end,end-start);
        }


这段代码的结果中,for与foreach的执行时间差不多,而且相对foreach还会快点,我查看了一下MSIL代码,结果是一样的,有谁知道原因的可以分析一下吗?