![]() |
1
1
当我下载zip文件并查看您的代码时,问题变得显而易见: 它不是同一个代码。 由于这两个测试有不同的代码,它们由C编译器进行不同的编译,并由JIT编译器进行不同的优化。不同的寄存器被分配给局部变量。使用不同的呼叫技术。使用不同的堆栈偏移。 以下是我注意到的两种基准方法之间的一些差异:
我的猜测是,在winforms版本的代码中,jit编译器将变量“i”放在堆栈偏移处,而在wpf版本中,它将其放在寄存器中,然后需要在每次迭代中保存该寄存器。 无论如何,不要把差异归咎于wpf和winforms:把差异归咎于两个不同的测试,它们表面上看起来很相似,但优化的方式不同。 将测试代码分解为单独类中的静态方法。 如果你在两个基准测试中使用相同的代码,我可以保证你会得到相同的结果。 |
![]() |
2
3
在windows机器上,很多事情都可能在6秒内发生。我可以想象,wpf中的后台处理与winforms中的后台处理有点不同(并且会带来更多的开销)。 |
![]() |
3
3
第一个循环对我来说是同样的速度。 你在测量 没有 附加的调试器? |
![]() |
4
2
首先,要排除任何环境因素,您必须在24到48小时内对每个溶液进行此测试。其次,它变慢的实际逻辑是有缺陷的。如果您从这个应用程序中分离任何gui gode,您将看到它们都以相同的框架为目标,因此它们不应该有任何不同。 如果您正在测试哪个gui框架更快,那么您的测试是无效的,因为它没有发挥任何一个优点或缺点。以这种方式对winforms测试wpf就是忽略了两个框架之间的根本区别。 由于两个框架都是共存的,因此没有测试每个框架的有偏见的方法。如果说wpf在呈现复杂的原语或昂贵的gui操作方面更快,则有缺陷,因为测试会偏向于wpf。 基础模型可能如此不同,这意味着任何这种性质的测试都是主观的。我不相信这种性质的测试仅仅是因为它们要么试图证明作者的观点,要么反驳别人的方法。 我不担心速度,因为如果一个客户有能力正确运行一个wpf应用程序,那么得失将是如此微不足道,他们将不重要。 |
![]() |
5
1
屏幕上有某种形式的显示吗?我想你看到的可能是表单的开销差异。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |