foreach,性能方面。我们应该在循环之前或内部声明一次变量吗?

2024-04-13

在 foreach 语句外部声明变量并每次在其内部分配它(foreach)或在 foreach 内创建一个新变量对于性能更好 例如

private List<ListItem> GetItems()
        {
            var items = new List<ListItem>();
            var collection = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            ListItem item;
            foreach (var i in collection)
            {
                item = new ListItem { Text = i.ToString() };
                items.Add(item);
            }

            return items;
        }

或者这个?

private List<ListItem> GetItems()
        {
            var items = new List<ListItem>();
            var collection = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            foreach (var i in collection)
            {
                ListItem item = new ListItem { Text = i.ToString() };
                items.Add(item);
            }

            return items;
        }

当然,我在这里谈论的是项目对象。 谢谢你们。


这听起来像是一个过早优化 http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize.

首先,你有没有理由相信这里存在性能问题?

其次,在发布版本中,编译器的优化器可能会为这两种情况生成相同的代码- 所以这可能是无关紧要的。在调试版本中,这可能并不总是正确的,但是您不需要优化,因为调试版本的目的是允许您准确地单步执行代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

foreach,性能方面。我们应该在循环之前或内部声明一次变量吗? 的相关文章

随机推荐

  • 在 Firefox 中,在选项卡重定向之前获取 URL 的方法是什么?

    我为 Firefox 开发了一个附加组件 它有一个重定向链接 https www google com vn url sa t rct j q esrc s source web cd 1 cad rja uact 8 ved 0CB0QF
  • pytest 无法导入模块,而 python 可以

    我正在用 Python 开发一个包 我使用虚拟环境 我在 virtualenv 的 pth 路径中设置了模块根目录的路径 这样我就可以在开发代码时导入包的模块并进行测试 问题 1 这是一个好方法吗 这工作正常 这是一个例子 这是我想要的行为
  • 使用证书和自定义 ssl 套接字工厂到 ldap 的 SSL 连接

    这是我的场景 我想使用 jndi 连接到 ldap 我使用自定义 SSLSOcketfactory 来读取信任库和密钥库 上下文创建成功 但是当我尝试使用相同的凭据进行身份验证时 它会抛出一个错误 告知不支持该身份验证方法 这是我的自定义
  • 在 JavaScript 或 jQuery 中动态更改 CSS 规则

    我正在寻找一种方法来更改文档中导入的样式表的 CSS 规则 所以我有一个外部样式表和一些class and div里面的属性 我想使用 JavaScript 或 jQuery 更改其中一项规则 这是一个例子 red color red 所以
  • 用java将图像写入pdf文件

    我正在编写一个代码 将 Microsoft power point ppt 幻灯片转换为图像 并将生成的图像写入 pdf 文件 以下代码生成图像并将其写入 pdf 文件 但我面临的问题是 当我将图像写入 pdf 文件时 它的大小超出了 pd
  • 通过Powershell为证书私钥分配权限(Win 2012 R2)

    在附加到域的 Windows Server 2012 R2 计算机上 我运行以下语句 target machine fqdn System Net Dns GetHostByName env computerName certificate
  • Javascript clientHeight 和替代方案

    我目前正在尝试修改一个 滑入 的 Javascript 函数 该脚本要求您定义 div 的高度 因此它在动态填充的 中几乎没有用处 我在 javascript 中的 clientHeight 属性上发现了一些文本 但它似乎不支持将显示设置为
  • 如何将浮点数包装到区间 [-pi, pi)

    我正在寻找一些可以有效完成的不错的 C 代码 while deltaPhase gt M PI deltaPhase M TWOPI while deltaPhase lt M PI deltaPhase M TWOPI 我有什么选择 更新
  • Git Status 使用 Cygwin 挂起

    在我的 Windows 机器上 我有一个可以与 msysgit 很好地配合的存储库 但当我尝试跑步时git status在 cygwin 上 它只是挂起 不打印任何内容 直到我按 Ctrl C 我怎样才能调查这个问题以找出这种行为的原因 造
  • 使用 getid3 (id3v2) 将 APIC 写入 mp3 文件

    我正在尝试使用 getid3 将 APIC 图片写入 mp3 文件 这是代码 cover home user public html artwork cover jpg TagData attached picture array pict
  • LINQ:从列表中选择项目(分组/选择/求和和最大值!)

    我只是沉浸在 Linq 中并享受很多乐趣 任何人都可以帮助我查询以下内容 我有一个数据列表 Key Value Aaa 12 AaA 10 AAa 5 BBB 2 Bbb 1 1 I want to group by Key ToUpper
  • BOOST_PP_REPEAT 带数组

    我的结构如下 struct E1 typedef boost tuple lt boost optional lt N type A gt N namespace boost optional lt N type B gt boost op
  • 如何使用多个朋友的 Facebook ID 在他们的墙上发帖

    在我的应用程序中 我需要将图像和消息发布到多个朋友的墙上 我看过关于这个问题的 stackoverflow 帖子 我发现需要批量请求概念来做到这一点 我不明白 如何创建 json 对象 我在一些帖子中看到 我们不能一次发布超过 10 个帖子
  • 如何在javascript中编写Or条件?

    这是对的吗 if expiryMonth MM expiryMonth mm 对 那是正确的 MDC Mozilla 开发者中心 有有关逻辑运算符的大量信息 https developer mozilla org en JavaScript
  • 如何在我的命名空间中使用默认的 php 类?

    我正在使用命名空间来解决项目中使用的两个 SDK 中的类名冲突 我已经在其中一个文件中声明了一个名称空间 例如 namespace temp class abc extends stdClass my class def 当我点击这段代码时
  • Apple 推送通知服务:证书安装服务器端?

    我已按照以下说明进行操作如何构建 Apple 推送通知提供程序服务器 教程 http blog boxedice com 2009 07 10 how to build an apple push notification provider
  • Pandas 在 Groupby 中重新索引日期

    我有一个以零星日期作为索引的数据框 列 id 和 num 我想pd groupby id 列 并将重新索引应用于数据框中的每个组 我的示例数据集如下所示 id num 2015 08 01 1 3 2015 08 05 1 5 2015 0
  • 获取 iPhone 唯一 ID 的 API?

    两部分问题 除了 MAC 地址之外 iPhone 是否还有唯一的 ID 如果是这样 我可以使用 API 调用来获取它吗 希望这不是重复的 我找不到任何东西 iPhone 确实有一个唯一标识符 称为 UDID 这与设置设备进行开发或进行临时分
  • DT with Shiny:多页可编辑数据表在编辑后跳转到第一页

    我有以下程序 正如标题所示 每次我在第一页之后的页面上编辑项目时 表格都会返回到第一页 我希望表格保留在我正在编辑的页面上 而不跳回到第一页 我在这里的其他线程上看到了这个问题 但他们的解决方案似乎不适用于当前版本DT and shiny包
  • foreach,性能方面。我们应该在循环之前或内部声明一次变量吗?

    在 foreach 语句外部声明变量并每次在其内部分配它 foreach 或在 foreach 内创建一个新变量对于性能更好 例如 private List