gpt4 book ai didi

c# - 迭代速度和数据类型

转载 作者:太空狗 更新时间:2023-10-29 20:36:45 25 4
gpt4 key购买 nike

数组(或列表、链表、字典等)的迭代速度是否取决于数据类型?

例子:10 个 bool 值数组与 10 个整数数组?

最佳答案

是的,数据类型很重要。它与迭代无关;它与数据类型有关。

值类型

int 的长度为 4 个字节。 decimal 的长度为 16 个字节。所以 decimalint 的 4 倍。每次从数组中检索一个值时,都会复制该值。如果是 decimal,则复制 16 个字节。 (在引用类型的情况下,引用被复制,通常是 4 或 8 个字节)。复制更多字节只会减慢迭代速度。

拳击

如果你遍历一个集合,你也有可能改变类型。例如:

foreach(object o in new int[] { 1,2,3 })
....

这会将每个 int 装箱到一个 object 中。这需要时间。这与迭代无关,它与你正在拳击的事实有关。

类型转换

最后一个例子:在你必须转换的地方也有数组:

foreach(Person p in new object[] { ... })
....

类型转换也需要额外的时间。

编辑

一些时间测量来支持我的主张:

Times in milliseconds. Arrays are of size 10,000. Iterations also 10,000.

关于c# - 迭代速度和数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16494265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com