c# - C#中迭代器的内存使用

标签 c# performance optimization iterator ienumerable

在 C# 中使用大量迭代器对内存使用有何影响?让我们假设一个程序执行数千个 foreach 循环——每个循环是否通过调用 GetEnumerator 在堆上分配一个临时对象? CLR 是否执行任何类型的优化(例如 IEnumerator 对象的堆栈分配)?或者这根本不是一个值得担心的重要问题?

最佳答案

在大多数情况下,它根本不够重要,无需担心。正如 Eric 指出的那样,可能有一些情况很重要,但根据我的经验,这种情况很少见。

如果您要执行数十万次 foreach循环,大概你在这些循环中做实际的工作。这几乎肯定比迭代器本身重要。

请注意,使用 foreach在一个数组上(在编译时已知是一个数组,也就是说)不使用 IEnumerable<T>无论如何-它使用直接索引。不过,我不会基于此更改我的代码。

与以往一样,如果您关心性能,则需要对其进行测量和分析。瓶颈几乎永远不会出现在您预期的位置。

关于c# - C#中迭代器的内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315767/

相关文章:

c# - 使用 Ravendb 批量删除

c# - 在运行时动态地向 TableLayoutPanel 添加控件

c++ - 快速字符串搜索?

c# - ASP.NET 如何报告 UploadProgress?

c# - asp.net 从代码隐藏页面插入 HTML

javascript - 什么是 replaceAll 性能 secret ? [HTML 转义]

performance - Theano 高效地按行切换

mysql - 如何加快查询速度?

c++ - __builtin_unreachable 促进了哪些优化?

windows - Windows 7下64位R的优化问题