第二篇:循环

   在一段程序中,过多的循环很大程度的给服务器施压。但是我们却离不开循环,我们唯一能做的就是最大程度的对其进行优化。
  .net对于循环似乎也有特殊的处理,在对某个数组或者集合进行循环时:for(int i=0;i<s.length;i++) {} 这样JIT只需要对边界进行一次范围检测,千万不要用一个变量来代替s.length;有人会认为用一个变量先取出s.length的值再放到for循环中这样只取一次length的值,这样会提高效率:int len=s.length; for(int i=0;i<len;i++) {} ;但是我要告诉你这样就错了,你违背了JIT的本意,它会进行多次的边界检查,反而降低了效率。
   对于循环我们要遵守以下规则:
   1.尽量使用一维零基数组,CLR对一维零基数组使用了特殊的IL操作指令newarr,在访问数组时不需要通过索引减去偏移量来完成,而且JIT也只需要执行一次范围检查,可以大大提高访问性能。
   2.尽量使用foreach循环,.net对于foreach非常宠爱,foreach循环总能被编译成最高效的代码。
   今日c#性能优化明星:foreach
   优化指数:90

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值