我正在运行以下代码并进行10,000次迭代,我在Android(Samsung J5)上获得了近5秒的时间。在Windows(I5)上进行100,000次迭代,我得到200ms。
我无法在Windows Mobile上进行测试,因为Xamarin项目现在的目标是.net标准,它与Windows Mobile不兼容。但实际的应用程序(使用PCL的旧应用程序)显示了类似的结果 - 在Windows Mobile和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);
}
}
答案 0 :(得分:0)
事实证明,连接到VS时,只有 才会变慢。独立运行时速度更快。
出于某种原因,只有Android会受此影响。 UWP和iOS没有。