我最近正在研究一些代码并且遇到了一个方法,该方法有3个for循环,可以在2个不同的数组上运行.
基本上,发生的事情是foreach循环将遍历向量并从对象转换DateTime,然后另一个foreach循环将从对象转换长值.这些循环中的每一个都将转换后的值存储到列表中.
最后一个循环将遍历这两个列表并将这些值存储到另一个列表中,因为需要对该日期进行一次最终转换.
然后在完成所有操作之后,使用ToArray()将最后两个列表转换为数组.
好吧,忍受我,我终于得到了我的问题.
因此,我决定制作一个for循环来替换前两个foreach循环并一举转换值(第三个循环是准必要的,但是,我确信有些工作我也可以把它放入单回路).
但后来我读到Gustav Duarte撰写的文章"你的计算机在等待时做了什么",并开始考虑内存管理以及在for循环中访问数据时正在进行的操作,其中两个列表同时被访问.
所以我的问题是,对于这样的事情,最好的方法是什么?尝试压缩for循环,使其尽可能少地循环,从而导致不同列表的多个数据访问.或者,允许多个循环并让系统引入它预期的数据.这些列表和数组可能很大并且循环遍历3个列表,可能是4个,这取决于如何实现ToArray(),可以获得非常高的成本(O(n ^ 3)??).但是根据我在上述文章和我的CS课程中的理解,不得不提取数据也很昂贵.
有谁愿意提供任何见解?或者我完全脱掉摇杆,需要重新学习我没有学过的东西?
谢谢
最好的方法?编写最易读的代码,弄清楚其复杂性,并确定是否真的存在问题.
如果你的每个循环都是O(n),那么你仍然只能进行O(n)操作.
话虽如此,它听起来像LINQ方法会更具可读性......并且可能也更有效率.不可否认,我们还没有看到代码,但我怀疑它是LINQ的理想选择.