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

  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • Just So

    Just So

    3 HAZİRAN 2007
  • SuppressedStorm

    SuppressedSt

    11 AĞUSTOS 2013