![]() |
1
1
在一个3GHz处理器上,仅400亿个时钟周期就需要13秒——我很怀疑一次迭代只需要一个时钟周期。你的考试肯定有问题。 有些事情可能会被优化掉——也许它看到你一遍又一遍地做同样的事情,并且决定根本不做(除了第一次)。进行性能分析时,需要确保随机化数据。 |
![]() |
2
1
我做过性能测试。它们发表在 PostSharp Blog 如果某些方面不使用反射、方法参数访问、方法实例访问等功能,则它们可以具有与手写代码相同的性能。由于Postshar发出msil指令,因此生成的代码可以由JIT编译器内联。 正如其他答案中所提醒的那样,确保(1)确实调用了Postharp(在生成的程序集上使用Reflector),(2)您正确使用了秒表。如果您比较单个测试的平均时间,那么PostSharp和手写代码之间的差异仅为几纳秒(假设您不使用昂贵的功能),这是正常的。 盖尔 |
![]() |
3
0
您是否可以更改您的测试,使生成的字符串在下一次迭代(写入控制台的字符串长度)中使用,或者类似的操作? 也许编译器优化程序的方式是,要么根本不执行postsharp函数,要么异步调用它,要么在另一个CPU上执行它,因为没有理由与其他迭代同步。如果您将其链接得更紧密,这可能会迫使编译器同步操作。 |