首页 > 其他分享 >for和foreach区别

for和foreach区别

时间:2023-05-24 10:22:28浏览次数:32  
标签:arr iterator 区别 00 循环 foreach var

1语法:for循环的语法比foreach循环更加灵活,可以控制循环的起始值、终止值和步长等参数。而foreach循环的语法比较简单,只需要指定要遍历的集合或数组即可。

2性能:在遍历数组时,for循环的性能比foreach循环更好,因为for循环直接使用数组的索引来访问元素,而foreach循环需要先获取迭代器,然后再通过迭代器来访问元素。
但在遍历集合时,foreach循环的性能比for循环更好,因为集合的元素数量可能会动态变化,而foreach循环可以自动适应集合的变化。 3可读性:foreach循环比for循环更易于理解和阅读,因为它的语法更加简洁明了,不需要关注循环的起始值、终止值和步长等参数。

上面是chatgpt给的答案,我觉得性能差不多,迭代器内部也是索引。

public class stringTest{
    public static void Show(){
        // var ss = new int[]{1,2,3,4};
        // var iterator = ss.GetEnumerator();
        // while(iterator.MoveNext()){
        //     System.Console.WriteLine(iterator.Current);
        // }

        Console.WriteLine("processing...");
            int size = 300_000_000;
            List<int> arr = new List<int>(size);
            for (int i = 0; i < size; i++)
                arr.Add(i);

            var t1 = DateTime.Now;
            double sum1 = 0;
            for (int i = 0; i < arr.Count ; i++)
                sum1 += arr[i];
            var t2 = DateTime.Now;
            double sum2 = 0;
            foreach (var v in arr)
                sum2 += v;
            var t3 = DateTime.Now;
            var iterator = arr.GetEnumerator();
            double sum3 = 0;
            while(iterator.MoveNext()){
                sum3 += iterator.Current;
            }
            var t4 = DateTime.Now;
            Console.WriteLine($"done.\nResult: sum1={sum1}, sum2={sum2}, sum3={sum3}");
            Console.WriteLine($"time1: {t2 - t1}\ntime2: {t3 - t2}\ntime3: {t4 - t3}");
    }
}

结果是:

processing...
done.
Result: sum1=44999999767108860, sum2=44999999767108860, sum3=44999999767108860
time1: 00:00:01.5251589
time2: 00:00:01.3958917
time3: 00:00:01.4024989

我觉得只是写法上不一样,性能就这样吧,这能差到哪去。环境是net core7.0.

标签:arr,iterator,区别,00,循环,foreach,var
From: https://www.cnblogs.com/Insist-Y/p/17427252.html

相关文章

  • StringBuffer 和 StringBuilder的区别
    1、线程安全性:StringBuffer是线程安全的,而StringBuilder不是。如果在多线程环境下使用StringBuilder,可能会发生竞态条件等并发问题。 StringBuffer和StringBuilder都继承于AbstractStringBuilder类:字符串的append方法调用的是AbstractStringBuillder的append方法,逻......
  • spring中@Autowired和@Resource的区别
    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。1、共同点两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。2、不同点(1)@Autowire......
  • [Java]instanceof和getClass()的区别
    getClass()willbeusefulwhenyouwanttomakesureyourinstanceisNOTasubclassoftheclassyouarecomparingwith. classA{}classBextendsA{}Objecto1=newA();Objecto2=newB();o1instanceofA=>trueo1instanceofB=>false......
  • Pytorch tensorboard与tensorboardX的区别
    tensorboardX跟tensorboard在使用上是基本一样的,区别可能仅在于一个是大佬开发的,一个是PyTorch官方与TensoBoard合作的。tensorboardX已经被deprecated了,并且不再维护了,用fromtorch.utils.tensorboardimportSummaryWriter原文链接:https://blog.csdn.net/hxxjxw/article/d......
  • org.springframework.data.annotation.Transient 和 javax.persistence.Transient 的
    1、org.springframework.data.annotation.Transient 和 javax.persistence.Transient 都是用于标记一个属性不需要被持久化到数据库中的注解。它们的区别在于它们所处的框架和使用场景。org.springframework.data.annotation.Transient 是SpringDataJPA框架提供的注解,用......
  • Python语言中__init__与__new__的区别是什么?
    __new__和__init__二者都是Python面向对象语言中的函数,其中__new__比较少用,__init__相对常用,那么两者有什么区别呢?以下是详细的内容:__new__作用:创建对象,并分配内存__init__作用:初始化对象的值注意:1、与java相比,java只有一个构造器。而python__new__方法与__in......
  • DP VGA HDMI VGA区别和相互转换
    HDMI、DP、DVI、VGA哪个更好?别因为几块钱白白浪费显示器性能-知乎(zhihu.com)显示器视频接口科普:HDMI、DP、DVI、VGA有哪些区别(zhihu.com)VGA转其它类型需要供电信号一般DP转换HDMI效果或更好,属于向下兼容,而HDMI转换DP属于向上兼容有些需要USB供电DVI与HDMI协议相同,不需......
  • 光猫和路由器的区别是什么
    光猫和路由器的区别,只用其中一个可以吗?没想到有很多小伙伴都不知道光猫和路由器的区别,这两者虽然长得很像,但是功能却截然不同,今天小亿就带大家了解一下二者的区别。光猫和路由器的区别主要有以下三方面。1、光猫和路由器的作用不同光猫主要是把光纤里的光信号转换成上网的网络......
  • linux 一块空磁盘初始化为dos的磁盘分区表,然后可以直接初始化整个磁盘为ext4格式,也可
    问:linux一块空磁盘初始化为dos的磁盘分区表,然后可以直接初始化整个磁盘为ext4格式,也可以先把磁盘分出一个Partition再初始化为ext4格式,这两种方式有什么区别,有什么特点答:在Linux上,对一块空磁盘进行初始化为ext4文件系统时,你可以选择两种不同的方式:直接初始化整个磁盘为......
  • 关于AI与api-Java接口的区别应用点
    AI和API是目前互联网技术中的两个趋势,它们在许多领域都发挥了重要作用。在技术的领域中,AI代表的是人工智能,而API代表的是应用程序接口。在本文中,将讨论AI和API的详细分析。AI是人工智能的简称,是指通过计算机技术模拟人类智能的一种技术体系。AI可以学习数据并自我改进,以达到更好的......