gpt4 book ai didi

c# - 了解扩展 ElementAt(index)

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

考虑这段代码:

int size = 100 * 1000 * 1000;
var emu = Enumerable.Range(0, size);
var arr = Enumerable.Range(0, size).ToArray();

当我调用 emu.ElementAt(size-10) 和 arr.ElementAt(size-10) 并测量时间时,arr 快得多(数组为 0.0002 秒,而 IEnumerable 为 0.59 秒)。

据我了解,扩展方法 ElementAt() 具有签名

public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index)

并且由于“源”是一个 IEnumerable,执行的逻辑将是相似的 - 与我在直接访问数组的地方看到的相反。

有人可以解释一下吗:)

最佳答案

调用 ElementAtIEnumerable<T> 上将循环遍历项目,直到它到达所需的索引。 (一个 O(n) 操作)

调用 ElementAtIList<T> 上(例如数组)将使用 IList<T>的索引器立即获得所需的索引。 (一个 O(1) 操作)

关于c# - 了解扩展 ElementAt(index),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3180091/

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