SORU
31 Ocak 2009, CUMARTESİ


String.() İçeren bir Dize daha hızlı.() Adres bilgisi?

Yaklaşık 2000 karakter string bir tampon var ve eğer belirli bir dize içeriyorsa, tampon kontrol edin.

Herkes String.Contains method String.IndexOf method daha iyi yapar biliyor mu?

    // 2000 characters in s1, search token in s2
    string s1 = "Many characters. The quick brown fox jumps over the lazy dog"; 
    string s2 = "fox";
    bool b;
    b = s1.Contains(s2);
    int i;
    i = s1.IndexOf(s2);

Fun fact

CEVAP
31 Ocak 2009, CUMARTESİ


Contains aramalar IndexOf:

public bool Contains(string value)
{
    return (this.IndexOf(value, StringComparison.Ordinal) >= 0);
}

Sonuçta bir CLR uygulaması kullanan CompareInfo.IndexOf, çağıran.

Eğer dizeleri CLR göre nasıl 14 ** (bak . görmek isterseniz ^em>CaseİnsensitiveCompHelper).

IndexOf(string) bir seçenek yok ve Contains()bir Sıra compare (bir byte-by-byte gerçekleştirmek için çabalamak yerine, karşılaştırma akıllı, örneğin, e é ile karşılaştırın) kullanır.

IndexOf IndexOf düz bir dize arama Kernel32.dll (reflektör güç!) FindNLSString kullanarak gider gibi biraz daha hızlı (teoride).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EatingIn

    EatingIn

    12 EKİM 2013
  • Jon Reed

    Jon Reed

    14 AĞUSTOS 2006
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007

İLGİLİ SORU / CEVAPLAR