evet ve hayır! Hayır, çünkü Split
ek yüküne sahiptir. Tam bir dize yinelemeli, karakterleri cadı kibritleriyle eşleştirmeli, bölünmeli ve sonuç dizisini yapmalı ve döndürmelidir.
ve evet, çünkü büyük bir dizede (örneğin 100MB) String.Contains
tam 100M karakterleri yinelemeli, her giriş ve sonraki karaktere göre karşılaştırır ... ancak 200K kelimelerde 100M'yi böldüğünüzde, IEnumerable.Contains
ilk kelimeyi girişle karşılaştırır, eğer ilk char eşleşmezse diğer karakterleri atlar ve bir sonraki kelimeye gider ve 5 karakter daha sonra gider. Bu senaryo döngüsünde 200K tekrarlanır (girişlere bağlıdır) örneğin cadı 100M'den azdır!
Sadece büyük bir dizeniz varsa ve Contains
yöntemini birkaç kez kullanmak istiyorsanız, Böl'ü bölün ve sonucu bir dizide tutun, ardından array.Contains
yöntemini kullanın.
Profil. Ayrıca farklı işlevlere sahiptirler. Ayrılma, 'Rob, ert' ile eşleşmeyecek, bölünmeyecek. – Rob
Bak: [performans rant] (https://ericlippert.com/2012/12/17/performance-rant/). Bir büyük dizenin en az bir kez daha küçük bir dize içerip içermediğini kontrol etmek isterseniz, [IndexOf] 'un (https://msdn.microsoft.com/library/k8b1470s.aspx) sıfır veya daha yüksek olup olmadığını kontrol edebilirsiniz. (Sıfırdan az demektir: bulunamadı). – Corak
Gösterilebilir bir performans probleminiz olmadıkça daha da önemsizdir. Bu söylenecek olursa, programlamada * mantık * kontrolörde görülmeli ve görünümde olmamalıdır. –