是否有某些原因导致相同的数学运算在一个Silverlight应用程序中比另一个Silverlight应用程序花费的时间要长得多?silverlight数学性能问题
例如,我有一些代码需要一个点列表并将它们转换(缩放和转换它们)并填充另一个点列表。重要的是我保持原始点完好无损,因此是第二个列表。
下面是相关的代码(规模为双和原产地是一个点):
public Point transformPoint(Point point) {
// scale, then translate the x
point.X = (point.X - origin.X) * scale;
// scale, then translate the y
point.Y = (point.Y - origin.Y) * scale;
// return the point
return point;
}
以下是我正在做的循环和时间,在情况下,它是很重要的:
DateTime startTime = DateTime.Now;
foreach (Point point in rawPoints) transformedPoints.Add(transformPoint(point));
Debug.Print("ASPX milliseconds: {0}", (DateTime.Now - startTime).Milliseconds);
在运行14356点(不要问,它是在桌面应用程序中模拟一个真实的世界数字),故障如下:
Silverlight应用程序#1:46毫秒
Silverlight应用程序#2:859毫秒
第一个应用程序是一个空的应用程序,它在MainPage构造函数中执行循环。第二个是在另一个类的方法中执行循环,我想在GUI线程的事件处理程序中调用该方法。但是,如果考虑到循环内部发生了相同的操作,是否应该考虑这一点?
在线程工作或其他方面我可能缺少一些巨大的东西,但这种差异对我来说根本没有意义。
请使用System.Diagnostics.StopWatch来测试您的代码并发布结果。使用DataTime是非常不准确的。 – ParmesanCodice 2009-10-09 21:52:31
另外 - 也许这是显而易见的 - 确保你在这两种情况下测量版本构建。 – 2009-10-09 21:54:39