4 EYLÜL 2008, PERŞEMBE
İki bayt dizi karşılaştırılması .NET
Nasıl bu kadar hızlı yapabilirim?
Elbette bunu yapabilirim:
static bool ByteArrayCompare(byte[] a1, byte[] a2)
{
if (a1.Length != a2.Length)
return false;
for (int i=0; i<a1.Length; i )
if (a1[i]!=a2[i])
return false;
return true;
}
Ama BCL bir işlevi, ya da bunu yapmak için son derece optimize edilmiş bazı kanıtlanmış yolu da arıyorum.
java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2);
güzel çalışıyor ama 64 için çalışacak gibi görünmüyor.
Süper-hızlı yanıt here not.
CEVAP
4 EYLÜL 2008, PERŞEMBE
Enumerable.SequenceEqual yöntemi kullanabilirsiniz.
using System;
using System.Linq;
...
var a1 = new int[] { 1, 2, 3};
var a2 = new int[] { 1, 2, 3};
var a3 = new int[] { 1, 2, 4};
var x = a1.SequenceEqual(a2); // true
var y = a1.SequenceEqual(a3); // false
Eğer kullanabilirsiniz .Nedense NET 3.5, yöntem TAMAM.< / ^ br . Derleyici\çevre performansı hakkında endişelenmenize gerek yok bu yüzden döngü optimize çalıştırma.
Bunu Paylaş:
Java dizi bayt tamsayı...
Kolay Yolu Arada İki Bayt Dizi...
İki Bayt Dizi karşılaştırmak? (Java)...
dönüştürme bitmap dizi bayt için Java...
Nasıl Java bayt bir dizi başlatmak mı?...