Некоторые тесты производительности (скорости), суммирующие различные параметры, не то чтобы это действительно важно #microoptimization (с использованием расширения linqpad )
Параметры
void Main()
{
object objValue = null;
test(objValue);
string strValue = null;
test(strValue);
}
// Define other methods and classes here
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(...)
будет сохранена пустая строка.
Полученные результаты
Объект
- nullcheck 1,00 x 1221 тик прошло (0,1221 мс) [за 10 000 повторений, 1,221E-05 мс за]
- Coallesce 1,14x Прошло 1387 тиков (0,1387 мс) [в 10K повторений, 1,387E-05 мс за]
- строка + 1,16x прошедшее 1415 тактов (0,1415 мс) [за 10K повторений, 1,415E-05 мс за]
- str.Concat 1,16x Прошло 1420 тиков (0,142 мс) [в 10K повторений, 1,42E-05 мс за]
- Преобразование 1,58x 1931 тика (0,1931 мс) [за 10 000 повторений, 1,931E-05 мс за]
- str.Format 5,45x Прошло 6655 тиков (0,6655 мс) [за 10 000 повторений, 6,655E-05 мс за]
Строка
- nullcheck 1,00x 1190 тактов (0,119 мс) [в 10K повторений, 1,19E-05 мс за]
- Преобразование 1,01 x 1200 прошедших тиков (0,12 мс) [за 10 000 повторений, 1,2E-05 мс за]
- строка + 1,04x прошедшее 1239 тактов (0,1239 мс) [за 10 тыс. повторений, 1,239E-05 мс за]
- Coallesce Прошло 1,20 x 1423 тика (0,1423 мс) [за 10 000 повторений, 1,423E-05 мс за]
- str.Concat 4,57x Прошло 5444 тика (0,5444 мс) [в 10K повторений, 5,444E-05 мс за]
- str.Format 5,67x Прошло 6750 тиков (0,675 мс) [за 10 000 повторений, 6,75E-05 мс за]