İki bayt dizi karşılaştırılması .NET | Netgez.com
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

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Caramella Girls

    Caramella Gi

    19 Mayıs 2008
  • SaraBeautyCorner - Nails and Nail Art Designs, DIY, Fashion & Makeup Tutorial

    SaraBeautyCo

    7 EKÄ°M 2012