Xamarin HMACSHA512 在 Android 上非常慢

Xamarin HMACSHA512 VERY slow on Android

我是 运行 以下代码,经过 10,000 次迭代,我在 Android (Samsung J5) 上得到了将近 5 秒的时间。在 Windows (I5) 上进行 100,000 次迭代,我得到 200 毫秒。

我无法在 Windows Mobile 上进行测试,因为 Xamarin 项目现在针对与 Windows Mobile 不兼容的 .net 标准。但是实际的应用程序(这是一个旧应用程序,使用 PCL)显示了相似的结果——在 Windows 移动和 iOS 上几乎是即时的,在 Android 上几秒钟,对于相同的代码。

有没有办法加快 HMACSHA512(或其 256 版本)的速度?

private void Button_Clicked(object sender, EventArgs e)
{
    ICrypto crypto = DependencyService.Get<ICrypto>();
    Stopwatch watch = new Stopwatch();

    byte[] b = new byte[64];
    watch.Start();
    for (int i = 0; i < 10000; i++)
    {
        b = crypto.CalculateHmac512(b);
    }
    watch.Stop();
    label.Text = watch.ElapsedMilliseconds.ToString();
}

class Crypto : ICrypto
{
    //HMACSHA256 hmac = new HMACSHA256();
    HMACSHA512 hmac = new HMACSHA512();

    public byte[] CalculateHmac512(byte[] m)
    {
        return hmac.ComputeHash(m);
    }
}

事实证明,只有 连接到 VS 时才慢。 运行 独立时速度更快。

出于某种原因,只有 Android 受此困扰。 UWP 和 iOS 没有。