Tag: 边界检查消除

数组边界检查.NET 4及以上的效率

我感兴趣的是如何有效的低级algorithm可以在.net。 我想让我们select在C#中编写更多的代码,而不是将来编写C ++代码,但是一个绊脚石就是.NET中的边界检查,这种检查是随循环和随机访问数组而发生的。 一个激励的例子是计算两个数组中相应元素的乘积之和的函数(这是两个向量的点积)。 static void SumProduct(double[] X, double[] Y) { double sum = 0; int length = X.Length; if (length != Y.Length) throw new ArgumentException("X and Y must be same size"); for (int i = 0; i < length; i++) // Check X.Length instead? See below sum += X[i] * Y[i]; } 从我所知道的,并不知道足够的IL或x86来检查,编译器不会优化X 和 […]