如何创建一个通用例程来计时方法?

2023-12-13

我需要测量应用程序上下文中许多不同方法的执行情况。

.NET 当然有 Stopwatch 类,它允许人们使用它的 .Start() 和 .Stop() 方法轻松地对一段代码进行计时。

然而,以正常方式使用 Stopwatch 类需要我用 Stopwatch 对象的实例来装饰每个方法,并调用它的 .Start() 和 .Stop() 方法。

我需要在数百个方法上使用秒表功能,并且不想用此代码污染每个方法。我还希望能够打开和关闭计时。

有没有一种简单的方法可以在我自己的代码中实现通用计时解决方案?如果是这样,怎么办?代码分析器可以做到这一点,所以我认为这一定是可能的。


只是一个想法。声明一个方法如下

public static long Measure(Action action)
{
    Stopwatch sw = Stopwatch.StartNew();
    action();
    return sw.ElapsedMilliseconds;
}

并用作

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

如何创建一个通用例程来计时方法? 的相关文章

  • 使用预编译头减少 clang 编译时间

    我正在开发一个数据库项目 该项目将查询 以某种高级语言表示 编译为 C 代码 这段代码由数据库编译并执行 那部分工作得很好 现在 我正在尝试减少 C 查询代码的编译时间 我想知道是否可以使用预编译头来提高性能 该查询被转换为一个名为 Que
  • 在 C# 中调用事件处理程序

    我一直在尝试学习如何在 C 中使用事件处理程序 但我无法弄清楚 handler this e 在以下代码中的作用 public event EventHandler ThresholdReached protected virtual vo
  • 无缝滚动瓷砖地图

    我正在开发一个自上而下的角色扮演游戏 并且想要实现无缝滚动地图 也就是说 当玩家探索世界时 地图之间没有加载屏幕 也没有通往下一个区域的 门 我有两种方法可以打破世界 在顶层 我有 区域 它只是 9 个 地图 的集合 这些区域仅由目录表示
  • 使用 size_t 值反向遍历向量

    我想以相反的方向遍历向量的值 如您所知 向量的大小为 size t 当我使用以下代码时 for size t r m size 1 r gt 0 r x r f r for size t c r 1 c lt m size c x r m
  • 在 C++ 中使用表达式模板进行符号微分

    如何在 C 中使用表达式模板实现符号微分 一般来说 您需要一种表示符号的方法 即编码的表达式模板 例如3 x x 42 以及一个可以计算导数的元函数 希望您对 C 中的元编程足够熟悉 知道这意味着什么和需要什么 但可以给您一个想法 This
  • WinForms - 表单大小错误

    我们有以下代码 private void MainForm Shown object sender EventArgs e RepositionForm private void RepositionForm Rectangle rect
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 实用程序库中应包含哪些内容[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着我的项目越来越多 我发现我经常从一个项目到另一个项目 从一个客户到另一个客户重复许多常见的任务 因此 我开始组装一个 实用程序 库 这是这些
  • 将一个整数从 C 客户端发送到 Java 服务器

    我使用此代码将一个整数从我的 Java 客户端发送到我的 Java 服务器 int n rand nextInt 50 1 DataOutputStream dos new DataOutputStream socket getOutput
  • DotNET 应用程序中的 GDI 句柄

    我的纯 DotNET 库作为非托管桌面应用程序中的插件运行 我收到了稳定的 虽然低 崩溃报告流 这些报告似乎表明 GDI 句柄存在问题 错误消息中的字体等 恢复为系统字体 各种控件的显示崩溃 不久后发生大规模崩溃 我的窗体几乎没有控件 但我
  • 使用宏计算源文件行数?

    是否可以使用 C C 预处理器将源文件中的行数计算为宏或某种编译时可用值 例如 我可以更换吗MAGIC1 MAGIC2 and MAGIC3在下面 并在使用时以某种方式获取值 4MAGIC3 MAGIC1 can be placed whe
  • ASP.NET MVC 中 ModelState.AddModelError 中的关键参数有什么意义?

    我在我的控制器中添加了验证检查来修改ModelState如果验证失败 例如 private bool ValidateMoney string raw string name decimal min decimal max try var
  • 数组与映射的性能

    我必须循环一个大数组中的元素子集 其中每个元素都指向另一个元素 问题来自于检测大图中的连接组件 我的算法如下 1 考虑第一个元素 2 将下一个元素视为前一个元素所指向的元素 3 循环直到没有发现新元素 4 考虑1 3中尚未考虑的下一个元素
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 未找到 _sqlite3_open 等符号错误

    您好 我收到此错误 Undefined symbols sqlite3 open referenced from main in ccRlWVer o sqliite3 close referenced from main in ccRlW
  • 在 C# WinForms 中预览文档(Word、Excel、PDF、文本文件等)?

    我正在开发一个 C WinForms 应用程序 我希望能够 预览 其中的各种文档类型 也就是说 当用户从列表中选择文件名时 它会在下面以相同的形式显示所选文件的预览 这很像 Outlook 允许您无需双击即可预览选定邮件的方式 有没有什么方
  • 清理堆分配对象的良好实践或约定?

    我正在学习C 我有 C C ObjC 背景 相当高级的语言 在 C 或 ObjC 上 作为函数或方法的结果返回堆分配的对象是很简单的 因为对象的清理是受管理的 按照惯例 会在适当的时候销毁 但我不知道在 C 中应该如何处理这个问题 例如 s
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • 如何在没有 Visual Studio 的情况下将新文件添加到 .csproj 文件

    如何添加新文件到 csproj从命令提示符 我认为没有任何工具可以响应命令行上的 add project 命令来执行此操作 但我认为您可以幸运地创建一个程序 脚本来直接操作 csproj 文件的 XML 内容 csproj 文件的结构如下所
  • 类模板的 C++ 静态成员 - 链接器警告“多重定义”[重复]

    这个问题在这里已经有答案了 假设出于某种原因 我想要一个类模板 MyTemp 和一些静态数据成员 smDummyVar Mytemp h ifndef MY TEMP H define MY TEMP H template

随机推荐

  • DialogFragment 不关闭

    我已经四处寻找解决方案 但似乎这不是一个常见问题 我希望在我的应用程序连接到服务器时有一个不确定的对话框微调器 然后清除该对话框并在请求完成时显示不同的对话框 我正在使用Fragment兼容包 问题是在显示第二个对话框之前没有删除微调器 这
  • C# RSA 加密 -> PHP RSA 解密

    我正在尝试在 C 中使用 RSA 加密 AES 密钥和 IV 并使用 phpseclib 使用 PHP 解密它们 我花了大约 4 个小时尝试解决这个问题 但总是收到 第 2495 行解密错误 PKCS 似乎有问题 临时私钥
  • Hibernate 映射包

    我正在使用 Hibernate 注释 在我的所有模型类中 我都这样注释 Entity Table public class SomeModelClass 我的 hibernate cfg xml 是
  • SQL CLR 拆分 UDF 中的标识列

    如何使用标准 SQL CLR Split UDF 返回标识列 例如下面的代码将返回一个表 其中字符串值按分隔符分隔 我还需要以某种方式返回标识列
  • 禁用传单绘制“删除”按钮

    如何禁用 删除删除按钮传单抽奖编辑工具栏 编辑 按钮应保持启用状态 关于章节中的文档禁用工具栏项您可以执行以下操作 map addControl new L Control Draw edit featureGroup drawnItems
  • HTML5 将画布保存为 PNG

    我按照这个示例将画布保存到 PNG 文件 http greenethumb com article 1429 user friend image saving from the canvas 我的问题 下载的文件已损坏 当我在记事本中打开它
  • 为什么调试器不会将 win32 计时器回调中引发的未处理异常视为未处理异常?

    我一直在追踪工作中一个非常阴险的错误 似乎导致我一直在追踪的非常奇怪的行为的事件似乎是在处理计时器回调时引发的异常 我的任何代码都没有处理该异常 因此我希望调试器能够收到未处理异常的通知 并通过一个令人讨厌的弹出窗口提醒我 不 相反 第一次
  • 有没有办法访问向量中的索引

    我需要访问向量内的索引 单个值 我认为它会类似于 v1 lt c a b c d e v1 3 h 但这似乎根本不起作用 其他人知道该怎么做吗 编辑 好吧 回答你的一些问题 这是我想要实现的总体目标的大图 MyDataR1 lt scan
  • 多线程签名生成C#

    我正在使用符合 PKCS11 标准的加密设备来保护我的私钥 加密设备每秒能够生成 500 个 RSA 2048 位签名 我用 C NET 编写了一个与 PKCS11Interop Wrapper 交互的应用程序 这是我的代码 region
  • Pythonic / Panda 方式创建 Groupby 函数

    我对编程相当陌生 正在寻找一种更Pythonic 的方法来实现一些代码 这是虚拟数据 df pd DataFrame Category np random choice Group A Group B 10000 Sub Category
  • MSBuild 条件执行?

    我正在使用 E g
  • 如何在 Swift 中使带有循环的函数异步?

    我正在为图书馆创建一个应用程序 我正在尝试获取用户从 Firebase 签出的所有书籍 但我尝试使该函数与 DispatchGroup 异步似乎不起作用 我怀疑这是因为函数内部发现了 for in 循环 func fetchHistory
  • CSS固定标题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在尝试将标题固定在顶部 我看过其他帖子并确信我做得正确 这是标题的 CSS header width 100 position fixed top 0px 由于某种原因
  • 验证字符串仅包含 Ruby 中允许的字符

    如何测试 Ruby 字符串是否仅包含特定字符集 例如 如果我允许的字符集是 AGHTM 加数字0 9 字符串 MT3G22AH is valid 字符串 TAR34 is invalid 因为R 一个非常惯用的非正则表达式解决方案是使用字符
  • Cocoapods:未找到库

    我正在尝试运行 Cocoapods 项目并收到以下错误 我尝试过了pod deintegrate进而pod install但它仍然存在 我也尝试删除pod debug xcconfig文件来自Project gt Info gt Confi
  • Spring 数据出现 ne04j 错误...检索路径时出错

    我将 spring 数据与 neo4j 一起使用 I used Query注解将查询放置在存储库中 查询如下 Query value START me node 0 friend node 1 MATCH p shortestPath me
  • 空手道 + 黄瓜报告缺少所调用场景响应的文档字符串

    Cucumber 报告缺少来自调用场景的响应的文档字符串 在给定的场景中 我使用 Call 调用多个场景 它的打印有时会随机响应所调用的场景 有时则不会 这阻碍了我们在测试报告中可视化API之间的数据流 尽管空手道日志有来自该调用场景的响应
  • 避免文本区域行/列错误?

    我正在使用几页验证工具我遇到的一个问题是他们告诉我 textarea 必须有 rows 和 cols 属性 如果我在 CSS 中设置它或使用 display none 并使用它来保存原始文本数据 我可以做一些跳过的事情吗 每次我使用它时 似
  • 删除缺失超过 x% 的列/行

    我想删除所有超过 50 的列或行NAs 在数据框中 这是我的解决方案 delete columns with more than 50 missings miss lt c for i in 1 ncol data if length wh
  • 如何创建一个通用例程来计时方法?

    我需要测量应用程序上下文中许多不同方法的执行情况 NET 当然有 Stopwatch 类 它允许人们使用它的 Start 和 Stop 方法轻松地对一段代码进行计时 然而 以正常方式使用 Stopwatch 类需要我用 Stopwatch