Einige (Geschwindigkeits-) Leistungstests, die die verschiedenen Optionen zusammenfassen, nicht dass es wirklich darauf ankommt #Mikrooptimierung (unter Verwendung einer Linqpad-Erweiterung )
Optionen
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();
}
Es ist wahrscheinlich wichtig darauf hinzuweisen, dass Convert.ToString(...)
eine Nullzeichenfolge beibehalten wird.
Ergebnisse
Objekt
- Nullcheck 1.00x 1221 verstrichene Ticks (0.1221 ms) [in 10K Wiederholungen, 1.221E-05 ms pro]
- Coallesce 1,14x 1387 verstrichene Ticks (0,1387 ms) [in 10K-Wiederholungen 1,387E-05 ms pro]
- Zeichenfolge + 1,16 x 1415 verstrichene Ticks (0,1415 ms) [in 10K-Wiederholungen 1,415E-05 ms pro]
- str.Concat 1.16x 1420 Ticks verstrichen (0.142 ms) [in 10K Wiederholungen, 1.42E-05 ms pro]
- Konvertierte 1,58x 1931 abgelaufene Ticks (0,1931 ms) [in 10K-Wiederholungen 1,931E-05 ms pro]
- str.Format 5.45x 6655 Ticks verstrichen (0.6655 ms) [in 10K Wiederholungen, 6.655E-05 ms pro]
String
- Nullcheck 1.00x 1190 verstrichene Ticks (0.119 ms) [in 10K Wiederholungen, 1.19E-05 ms pro]
- Konvertieren Sie die verstrichenen 1,01 x 1200 Ticks (0,12 ms) [in 10K-Wiederholungen 1,2E-05 ms pro]
- Zeichenfolge + 1,04 x 1239 verstrichene Ticks (0,1239 ms) [in 10K-Wiederholungen 1,239E-05 ms pro]
- Coallesce 1,20x 1423 Ticks verstrichen (0,1423 ms) [in 10K Wiederholungen 1,423E-05 ms pro]
- str.Concat 4.57x 5444 Ticks verstrichen (0.5444 ms) [in 10K Wiederholungen, 5.444E-05 ms pro]
- str.Format 5.67x 6750 verstrichene Ticks (0.675 ms) [in 10K-Wiederholungen, 6.75E-05 ms pro]