我在C#中使用BigInteger实现进行一些计算但是Windows Phone中的性能不如所需。
探查器检测到此功能消耗了大部分时间。任何线索?
这适用于Windows Phone 7,我无法通过原生来改进它。
private const long IMASK = 0xffffffffL;
/**
* returns x = x - y - we assume x is >= y
*/
private static int[] Subtract(
int xStart,
int[] x,
int yStart,
int[] y)
{
Debug.Assert(yStart < y.Length);
Debug.Assert(x.Length - xStart >= y.Length - yStart);
int iT = x.Length;
int iV = y.Length;
long m;
int borrow = 0;
do
{
m = (x[--iT] & IMASK) - (y[--iV] & IMASK) + borrow;
x[iT] = (int)m;
// borrow = (m < 0) ? -1 : 0;
borrow = (int)(m >> 63);
}
while (iV > yStart);
if (borrow != 0)
{
while (--x[--iT] == -1)
{
}
}
return x;
}