0

我在 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;
    }
4

0 回答 0