首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostSharp对速度没有影响

PostSharp对速度没有影响
EN

Stack Overflow用户
提问于 2010-01-19 00:44:07
回答 3查看 3.3K关注 0票数 3

我在PostSharp中偶然发现了一种不可能的良好的性能行为。为了评估速度,我编写了一个小程序,它将执行一个指定次数的函数,如果启用PostSharp,它将生成和删除几百个字符串,就在内存中(非固定的组合,因此它们不是自动的)。循环在非平凡(几毫秒)的时间内执行。

现在,我无法测量几百万次运行中的差异,一个大约400亿次迭代的疯狂运行相当于几纳秒与非PostSharp版本执行相同数量调用的差异。对我来说,这是不可能的。我的考试肯定有什么问题。我的同事对代码进行了同行评审,所以我很有信心代码能按照我的意愿完成。

那么,使用字符串生成(这是预期的应用程序中的使用)作为基准测试的慢速运行模拟有什么问题吗?

或者,其他人是否执行了(或知道)PostSharp的运行时性能分析?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-19 00:49:05

在一个3 GHz处理器上,光是400亿个时钟周期就需要13秒--我很怀疑一次迭代只需要一个时钟周期。你的测试肯定有问题。

有些东西可能会被优化掉--也许它会让你一次又一次地做同样的事情,并且决定根本不去做(除了第一次)。在进行perf分析时,您需要确保将数据随机化。

票数 1
EN

Stack Overflow用户

发布于 2010-01-19 07:19:40

我做过性能测试。它们发表在PostSharp博客

如果不使用反射、访问方法参数、访问方法实例等特性,某些方面可以具有与手写代码相同的性能。由于JIT发出了PostSharp指令,所以生成的代码可以由JIT编译器内联。

正如在其他答案中提醒的那样,请确保(1)确实调用了PostSharp (在结果程序集上使用反射器)和(2)正确地使用秒表。如果您正在比较单个测试的平均时间,那么PostSharp和手写代码之间的区别只是几纳秒(假设您没有使用昂贵的特性),这是正常的。

票数 1
EN

Stack Overflow用户

发布于 2010-01-19 07:25:11

您能否更改您的测试,以便在下一次迭代中使用生成的字符串(写入控制台的字符串长度)或类似的内容?也许编译器优化您的程序的方式要么是根本不执行后置函数,要么是异步调用它,或者是在另一个cpu上执行,因为没有理由与其他迭代同步。如果您更紧密地链接它,这可能会迫使编译器同步操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2090299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档