SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★TheCrono Official Channel★

    ★TheCrono

    3 Mayıs 2014
  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • Drakinen

    Drakinen

    1 EYLÜL 2008