当前位置:  开发笔记 > 编程语言 > 正文

回归本源; for循环,数组/向量/列表和优化

如何解决《回归本源;for循环,数组/向量/列表和优化》经验,为你挑选了1个好方法。

我最近正在研究一些代码并且遇到了一个方法,该方法有3个for循环,可以在2个不同的数组上运行.

基本上,发生的事情是foreach循环将遍历向量并从对象转换DateTime,然后另一个foreach循环将从对象转换长值.这些循环中的每一个都将转换后的值存储到列表中.

最后一个循环将遍历这两个列表并将这些值存储到另一个列表中,因为需要对该日期进行一次最终转换.

然后在完成所有操作之后,使用ToArray()将最后两个列表转换为数组.

好吧,忍受我,我终于得到了我的问题.

因此,我决定制作一个for循环来替换前两个foreach循环并一举转换值(第三个循环是准必要的,但是,我确信有些工作我也可以把它放入单回路).

但后来我读到Gustav Duarte撰写的文章"你的计算机在等待时做了什么",并开始考虑内存管理以及在for循环中访问数据时正在进行的操作,其中两个列表同时被访问.

所以我的问题是,对于这样的事情,最好的方法是什么?尝试压缩for循环,使其尽可能少地循环,从而导致不同列表的多个数据访问.或者,允许多个循环并让系统引入它预期的数据.这些列表和数组可能很大并且循环遍历3个列表,可能是4个,这取决于如何实现ToArray(),可以获得非常高的成本(O(n ^ 3)??).但是根据我在上述文章和我的CS课程中的理解,不得不提取数据也很昂贵.

有谁愿意提供任何见解?或者我完全脱掉摇杆,需要重新学习我没有学过的东西?

谢谢



1> Jon Skeet..:

最好的方法?编写最易读的代码,弄清楚其复杂性,并确定是否真的存在问题.

如果你的每个循环都是O(n),那么你仍然只能进行O(n)操作.

话虽如此,它听起来像LINQ方法会更具可读性......并且可能也更有效率.不可否认,我们还没有看到代码,但我怀疑它是LINQ的理想选择.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有