Çeşitli seçenekleri özetleyen bazı (hız) performans testleri, bunun gerçekten önemli olduğunu değil #microoptimization ( linqpad uzantısı kullanarak )
Seçenekler
void Main()
{
object objValue = null;
test(objValue);
string strValue = null;
test(strValue);
}
void test(string value) {
new Perf<string> {
{ "coallesce", n => (value ?? string.Empty).ToString() },
{ "nullcheck", n => value == null ? string.Empty : value.ToString() },
{ "str.Format", n => string.Format("{0}", value) },
{ "str.Concat", n => string.Concat(value) },
{ "string +", n => "" + value },
{ "Convert", n => Convert.ToString(value) },
}.Vs();
}
void test(object value) {
new Perf<string> {
{ "coallesce", n => (value ?? string.Empty).ToString() },
{ "nullcheck", n => value == null ? string.Empty : value.ToString() },
{ "str.Format", n => string.Format("{0}", value) },
{ "str.Concat", n => string.Concat(value) },
{ "string +", n => "" + value },
{ "Convert", n => Convert.ToString(value) },
}.Vs();
}
Convert.ToString(...)
Boş bir dizge tutacağına işaret etmek muhtemelen önemlidir .
Sonuçlar
Nesne
- nullcheck 1.00x 1221 tik geçti (0.1221 ms) [10K tekrar olarak, 1.221E-05 ms başına]
- coallesce 1,14x 1387 işaretleme süresi (0,1387 ms) [10K tekrar olarak, 1,387E-05 ms başına]
- dizi + 1,16x 1415 işaretleme süresi (0,1415 ms) [10K tekrar olarak, 1,415E-05 ms başına]
- str.Concat 1,16x 1420 tik sayısı geçti (0,142 ms) [10K tekrar, 1,42E-05 ms başına]
- Geçen 1,58x 1931 işaretini dönüştürme (0,1931 ms) [10K tekrar olarak, 1,931E-05 ms başına]
- str.Format 5.45x 6655 tıklanma sayısı (0.6655 ms) [10K tekrar olarak, 6.655E-05 ms başına]
Dize
- nullcheck 1.00x 1190 tıklama geçti (0.119 ms) [10K tekrar olarak, 1.19E-05 ms başına]
- Geçen 1,01x 1200 işaretlemeyi dönüştürme (0,12 ms) [10K tekrar, 1,2E-05 ms başına]
- dize + 1,04x 1239 işaretleme süresi (0,1239 ms) [10K tekrar olarak, 1,239E-05 ms başına]
- coallesce 1,20x 1423 tik geçti (0,1423 ms) [10K tekrar olarak, 1,423E-05 ms başına]
- str.Concat 4,57x 5444 tik geçti (0,5444 ms) [10K tekrar, 5,444E-05 ms başına]
- str.Format 5,67x 6750 tıklama sayısı (0,675 ms) [10K tekrar, 6,75E-05 ms başına]