方法调用开销

2023-12-28

在 .NET 中调用立即返回的方法的开销是多少(因为不满足内部第一个代码的条件)?

我认为,无论您的应用程序有多实时,开销都可以忽略不计,并且在任何情况下分析都应该显示事实,可读性更重要,但一些同事不同意我的观点,并说您应该总是避免那些电话...

还有其他意见吗?


我敢说在某些边缘情况下could是重要的——但它们将变得极其罕见。我同意你的观点:首先要考虑可读性。

请注意,如果方法非常短,JIT 编译器may内联它 - 但如果它是一个大方法,你只是happen快速退出,可能不会。在极端情况下,您可能希望将方法分成两部分:一个短方法(可以内联)用于测试方法的其余部分是否有效,另一个用于实际执行工作。然后您可以先执行测试,然后调用第二个方法。坦白说我不太喜欢它,并且会only建议您在发现这确实是一个问题之后再这样做...但至少您向您的同事提出了一个建议,以应对它确实被证明是一个问题的可能性:)

一件事你may要考虑避免方法调用的一个原因是评估参数是否需要很长时间。例如,考虑记录:

Log.Info("I did something: {0}", action.GenerateDescription());

Now if GenerateDescription需要很长时间,如果无论如何都不会发生日志记录,您就不想执行它......所以您可以编写:

if (Log.IsEnabled(LogLevel.Info))
{
    Log.Info("I did something: {0}", action.GenerateDescription());
}

另一种选择是使用委托来推迟评估 - 尽管这可能有其自身的(小)成本:

Log.Info("I did something: {0}", () => action.GenerateDescription());

或使用方法组转换:

Log.Info("I did something: {0}", action.GenerateDescription);

这很可能不是您的同事担心的问题,但值得考虑:)

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

方法调用开销 的相关文章

  • 如何嘲笑一切?

    我了解如何模拟接口或虚拟方法调用 但是像 TypeMock 这样的框架可以模拟框架中的所有内容 使用哪些 NET机制来提供此类功能 例如 Typemock Isolator 使用 CLR分析器API http msdn microsoft
  • wait task.delay 有助于加快 UI 刷新速度,但是如何实现呢?

    我有一个视图模型 它正在获取一行记录并显示在 Windows Phone UI 上 这个获取数据的视图模型方法正在执行大量任务 所有任务都标记为等待操作 如下所示 async Task GetData var dataCollection
  • WCF - 如何增加消息大小配额

    我有一个 WCF 服务 它将 1000 条记录从数据库返回给客户端 我有一个 ASP NET WCF 客户端 我在 asp net Web 应用程序项目中添加了服务引用来使用 WCF 当我运行客户端应用程序时 我收到以下消息 传入消息的最大
  • 如何从对Web服务发出的请求中获取客户端IP地址

    我的 IIS 中托管有一个 Web 服务 当客户端直接使用我的服务时 我需要找出客户端 IP 地址 like http MyIpAddress MyApplication MyWebServiceClass asmx http MyIpAd
  • 如何将动态数据写入 MVC 3 Razor 中的页面布局?

    我有带有 Razor 引擎的 MVC 3 C 项目 将动态数据写入 Layout cshtml 的方法和最佳实践是什么 例如 也许我想在网站的右上角显示用户名 该名称来自会话 数据库或基于用户登录的任何内容 更新 我也在寻找将某些数据渲染到
  • “为 .Net 1.1 生成 Web 服务代理的任何工具”

    我有一个 WSDL 文件 其中包含指向外部 XSD 的链接 我也将 xsd 部署到了正确的相对路径 因为它在 WSDL 中是引用的 当我尝试使用 VS 2003 Net 1 1 wsdl 工具 生成代理时 代理未生成 然而它在 VS 200
  • 是否可以在对Where 的调用中调用命名方法?

    我试图从 RedGate 的这本免费电子书中了解 Linq 的一些性能影响ftp support red gate com ebooks under the hood of net memory management part1 pdf f
  • 为什么 std::atomic 比 volatile bool 慢很多?

    多年来我一直使用 volatile bool 来控制线程执行 并且效果很好 in my class declaration volatile bool stop In the thread function while stop do th
  • 从 git 签出后 nuget dll 丢失

    I have a C solution containing different projects On those projects I have some normal nuget packages like Newtonsoft Js
  • 未指定authenticationScheme,并且没有使用默认身份验证和自定义授权找到DefaultChallengeScheme

    我有一个 NET Core 2 0 应用程序 并且遇到授权问题 我想针对特殊请求使用自定义授权 标头和标准默认身份验证 首先 我在中添加配置Startup cs public IServiceProvider ConfigureServic
  • 获取强类型的子属性名称

    通过将数据绑定对象到控件和网格 我讨厌属性名称如何成为魔术字符串 因此我创建了一个非常简单的方法 如下所示 public static string GetPropertyName
  • WPF 应用程序在第一次交互(例如单击按钮)后停止/冻结

    我目前在 WPF 中遇到问题 UI 加载正常 但每当进行第一次用户交互时 例如单击按钮 应用程序似乎会停止 或者例如 如果我有两个显示 MessageBox 的按钮 则第一次单击将等待几秒钟 然后显示MessageBox 但任何后续交互都是
  • 为什么我的原生 C++ 代码在 Android 上运行速度比 Java 慢很多?

    我将 Java 代码的某些部分移植到 C 以加快 Android 上的计算速度 这是一个物理子例程 我发现本机代码的运行速度比 Java 代码慢几倍 我认为我的项目配置可能有问题 或者可能是数组处理有问题 所以我在 HelloAndroid
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • 尝试从 C# 服务查询 IIS 时出现异常

    我从使用 C 编写的 Windows 服务调用以下代码 try ServerManager m new ServerManager if m null SiteCollection sites m Sites I get exception
  • 导入 IronPython 的嵌入式库

    我已通过 NuGet 将 IronPython 标准库添加到我的 c net4 项目中 后来获得了一些参考资料 IronPython IronPython Modules IronPython SQLite IronPython Wpf M
  • 无法使用前导 ../ 在顶级目录之上退出

    我有一个 asp net 网站 我们有管理区域 其中的登录页面仅供管理员使用 并且所有网站都允许所有人使用 当我收到此错误时 我需要询问如何为其定义正确的安全配置 Cannot use a leading to exit above the
  • 将 Foq 与 F# 函数类型结合使用

    例如 我使用 F 类型定义来防止函数之间的硬依赖 type IType1 int gt int type IType2 int gt string let func1 i int int i i let func2 i int string
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 从具有相同属性的另一个对象创建对象

    我有一个 C 对象 可以说有 20 个属性 它是数据契约的一部分 我还有另一个具有类似属性的业务实体 我想从响应对象中填充该实体 除了将一个对象的每个属性分配给另一个对象的相应属性之外 还有其他方法可以做到这一点吗 是的 看看自动映射器 h

随机推荐

  • MongoDB - 使用嵌套字典查找条目

    我有一个与 python 一起使用的 MongoDB 我的条目如下所示 a something b something c d something e something f something 我想查询具有特定 d 和 e 值的条目 但我
  • 无锁竞技场分配器实现 - 正确吗?

    对于一个简单的指针增量分配器 它们有正式名称吗 我正在寻找一种无锁算法 这看起来微不足道 但我想得到一些反馈 看看我的实现是否正确 非线程安全实现 byte head current head of remaining buffer byt
  • Java全对算法

    给定一个整数集合 有什么 Java 算法可以给出所有的项对 如下所示 给定示例集合 1 3 5 我们想要输出 1 1 3 3 5 5 1 3 1 5 3 5 请注意 顺序并不重要 因此我们需要 1 3 3 1 之一 但不能同时两者 这应该适
  • 检测 Windows Phone 7 是否连接到桌面 Zune 软件

    我已经在 Windows Phone 7 应用程序上工作了几个月 并且拥有一组有用的检测标志 这些标志用于测试代码是否在模拟器中 后台 前台线程上或在设计时间 看完整列表在这里 http silverlightzxing codeplex
  • (html) phpmyadmin 中文本字段的所见即所得编辑器

    我正在制作一个小型网站 我需要谁接手来添加一些内容 存储在三个表中 到 2013 年 9 月最多将有 500 条记录 小东西 现在我正在使用 phpmyadmin 但添加文本 其中一个表格是一个迷你博客 需要基本的 html 技能 我确信
  • Python文件缓存

    我正在从文件创建一些对象 来自模板 xsd 文件的验证器 以将其他 xsd 文件组合在一起 并且我想在磁盘上的文件发生更改时重新创建对象 我可以创建类似的东西 def getobj fname cache try obj lastloade
  • L2 取指未命中率远高于 L1 取指未命中率

    我正在生成一个综合 C 基准测试 旨在通过以下 Python 脚本导致大量指令获取丢失 usr bin env python import tempfile import random import sys if name main fun
  • Azure 函数-System.Net.Http

    我遇到了很多麻烦System Net Http使用 Azure Functions 时的库 如果我在门户中创建一个全新的 httptrigger 函数 它就可以正常工作 不过 我想用我自己的预编译汇编 https github com Az
  • 如何在 AngularJS 中使用 JSON 数组?

    我在这里想做的是 我想使用使用 Spring Restful WebService 生成的 JSON 如下所示 userid 1 firstName kevin lastName buruk email email protected cd
  • 将电子邮件作为服务发送给他人时是否应该使用 Reply-To 标头?

    假设我们有一个充当中间人的应用程序 允许 A 公司向其客户发送报告 A公司 B公司 我 A公司的客户 收到报告后 我们会向收件人发送电子邮件通知 但它们必须来自我们公司的通知电子邮件地址 例如 电子邮件受保护 cdn cgi l email
  • 内部异常:java.sql.SQLException:无效状态,Connection 对象已关闭

    我有一个使用 Eclipse Persistence Services 2 1 1 v20100817 r8050 的 JSF 应用程序 有时会收到以下错误 Exception EclipseLink 4002 Eclipse Persis
  • 如果我在 IntelliJ 中创建一个简单的客户端服务器应用程序,它应该如何工作?

    创建客户端服务器应用程序 serversocket 时 我会创建 2 个单独的项目还是可以在单个项目中执行此操作 我对这将是什么类型的项目感到有点困惑 并且对如何启动客户端和服务器感到更加困惑 或者我必须手动启动终端并执行罐子 这将是一个服
  • Python 在 Android 上有哪些限制?

    我正准备开始一点 Android 开发 需要选择一种语言 我了解 Python 但必须学习 Java 我想了解那些在 Android 上使用 Python 的人有哪些限制 另外 与 Java 相比有什么好处吗 Andrew 提到的大部分观点
  • Android 使用捆绑包从一个活动发送数据到另一个活动

    我必须活动AnswerQuestion java and SendAnswerToServer java 我想将数据从第一个活动发送到另一个活动 在 AnswerQuestion 活动中我这样写 Bundle basket new Bund
  • 使用 SQL 的百分位数

    我的数据集中有 3 列 Monetary Recency 频率 我想使用 SQL 创建另外 3 个列 例如 M P R Q F Q 其中包含货币 新近度和频率每个值的百分位值 先感谢您 Customer ID Frequency Recen
  • 如何拆分文件并并行处理它们,然后将它们缝合回去? UNIX

    我有一个文本文件infile txt像这样 abc what s the foo bar foobar hello world hhaha cluster spatio something something xyz trying to d
  • facebook 分享您在 ASP.NET MVC 中管理的页面

    我正在尝试在 ASP MVC 中从我们的网站在 facebook 中共享产品详细信息 我使用了 feed 对话框 它工作正常 但我需要 feed 对话框中的其他选项来在您管理的页面上共享 提要对话框 a href a
  • 使用 PyQt / QtWebkit 抓取多个链接

    我正在尝试抓取一个大型政府记录网站 这需要 滚雪球 方法 即从主搜索页面开始 然后按照抓取工具找到的每个链接到达下一页 我已经能够使用 PyQt 加载主页这个 SiteScraper 教程 http blog sitescraper net
  • 简单的逻辑问题:检查 x 是否在 2 个数字之间

    我想查看变量是否在某个值范围内 例如 如果 x 在 20 到 30 之间 则返回 true 最快的方法是什么 使用任何基于 C 的语言 显然可以通过 for 循环来完成 function inRange x lowerbound upper
  • 方法调用开销

    在 NET 中调用立即返回的方法的开销是多少 因为不满足内部第一个代码的条件 我认为 无论您的应用程序有多实时 开销都可以忽略不计 并且在任何情况下分析都应该显示事实 可读性更重要 但一些同事不同意我的观点 并说您应该总是避免那些电话 还有