Skip to content

Instantly share code, notes, and snippets.

@mattwarren
Last active December 20, 2016 00:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mattwarren/d2be775eec5a7adba928 to your computer and use it in GitHub Desktop.
Save mattwarren/d2be775eec5a7adba928 to your computer and use it in GitHub Desktop.
Benchmark of C# 6 String Interpolation vs calling ToString() directly
// Inspired by https://twitter.com/Nick_Craver/status/702693060472414208
public class Framework_Interpolated_vs_ToString
{
	private long counter = 0;

	[Setup]
	public void Setup()
	{
		counter = 0;
	}

	[Benchmark]
	public new string ToString()
	{
		return counter.ToString() + " ms";
	}

	[Benchmark]
	public string InterpolatedString()
	{
		return $"{counter} ms";
	}
}
@mattwarren
Copy link
Author

image

@mattwarren
Copy link
Author

// * Detailed results *
Framework_Interpolated_vs_ToString_InterpolatedString
Mean = 208.3594 ns, StdError = 2.1284 ns (1.02%); N = 24, StdDev = 10.4271 ns
Min = 201.8534 ns, Q1 = 202.9298 ns, Median = 204.0991 ns, Q3 = 208.5051 ns, Max = 236.9331 ns
IQR = 5.5753 ns, LowerFence = 194.5669 ns, UpperFence = 216.8680 ns
ConfidenceInterval = [204.1877 ns; 212.5311 ns] (CI 95%)
Framework_Interpolated_vs_ToString_ToString
Mean = 87.0203 ns, StdError = 0.1892 ns (0.22%); N = 20, StdDev = 0.8461 ns
Min = 86.0325 ns, Q1 = 86.3843 ns, Median = 86.6773 ns, Q3 = 87.4458 ns, Max = 89.2277 ns
IQR = 1.0615 ns, LowerFence = 84.7921 ns, UpperFence = 89.0381 ns
ConfidenceInterval = [86.6495 ns; 87.3911 ns] (CI 95%)
Total time: 00:00:48 (48.24 sec)

// * Summary *
BenchmarkDotNet-Dev=v0.9.1.0+
OS=Microsoft Windows NT 6.1.7601 Service Pack 1
Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
HostCLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
JitModules=clrjit-v4.6.100.0

Type=Framework_Interpolated_vs_ToString  Mode=Throughput  
Method Median StdDev Gen 0 Gen 1 Gen 2 Memory Traffic/Op
InterpolatedString 204.0991 ns 10.4271 ns 607 - - 38.98 B
ToString 86.6773 ns 0.8461 ns 522 - - 33.87 B

@mattwarren
Copy link
Author

Full Output Log


// ***** BenchmarkRunner: Start *****
// Found benchmarks:
// Framework_Interpolated_vs_ToString_InterpolatedString
// Framework_Interpolated_vs_ToString_ToString

// **************************
// Benchmark: Framework_Interpolated_vs_ToString_InterpolatedString
// *** Generate ***
// Result = Success
// DirectoryPath = C:\Users\warma11\Downloads__GitHub__\BenchmarkDotNet\BenchmarkDotNet.Samples\bin\Release\Framework_Interpolated_vs_ToString_InterpolatedString

// *** Build ***
// Result = Success

// *** Execute ***
// Launch: 1
// BenchmarkDotNet-Dev=v0.9.1.0+
// OS=Microsoft Windows NT 6.1.7601 Service Pack 1
// Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
// Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
// CLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
// JitModules=clrjit-v4.6.100.0

Pilot 1: 4 op, 216666.52 ns, 54.1666 us/op
Pilot 2: 8 op, 7222.22 ns, 902.7772 ns/op
Pilot 3: 16 op, 9122.8 ns, 570.1751 ns/op
Pilot 4: 32 op, 14444.43 ns, 451.3886 ns/op
Pilot 5: 64 op, 24707.59 ns, 386.0560 ns/op
Pilot 6: 128 op, 46754.35 ns, 365.2684 ns/op
Pilot 7: 256 op, 93128.59 ns, 363.7836 ns/op
Pilot 8: 512 op, 182075.9 ns, 355.6170 ns/op
Pilot 9: 1024 op, 361871.1 ns, 353.3897 ns/op
Pilot 10: 2048 op, 717280.22 ns, 350.2345 ns/op
Pilot 11: 4096 op, 1501080.86 ns, 366.4748 ns/op
Pilot 12: 8192 op, 3065641.21 ns, 374.2238 ns/op
Pilot 13: 16384 op, 3996547.02 ns, 243.9299 ns/op
Pilot 14: 32768 op, 6933708.79 ns, 211.6000 ns/op
Pilot 15: 65536 op, 13311686.95 ns, 203.1202 ns/op
Pilot 16: 131072 op, 26694835.85 ns, 203.6654 ns/op
Pilot 17: 262144 op, 53368765.28 ns, 203.5857 ns/op
Pilot 18: 524288 op, 107257910.32 ns, 204.5782 ns/op
Pilot 19: 1048576 op, 213721756.85 ns, 203.8210 ns/op

IdleWarmup 1: 1048576 op, 2130934.24 ns, 2.0322 ns/op
IdleWarmup 2: 1048576 op, 2119910.86 ns, 2.0217 ns/op
IdleWarmup 3: 1048576 op, 2115349.45 ns, 2.0174 ns/op
IdleWarmup 4: 1048576 op, 2110788.05 ns, 2.0130 ns/op
IdleWarmup 5: 1048576 op, 2120290.97 ns, 2.0221 ns/op
IdleWarmup 6: 1048576 op, 2142717.86 ns, 2.0435 ns/op
IdleWarmup 7: 1048576 op, 2242308.43 ns, 2.1384 ns/op

IdleTarget 1: 1048576 op, 2114589.22 ns, 2.0166 ns/op
IdleTarget 2: 1048576 op, 2356343.44 ns, 2.2472 ns/op
IdleTarget 3: 1048576 op, 2102805.6 ns, 2.0054 ns/op
IdleTarget 4: 1048576 op, 2118390.39 ns, 2.0203 ns/op
IdleTarget 5: 1048576 op, 2108507.35 ns, 2.0108 ns/op
IdleTarget 6: 1048576 op, 2121811.44 ns, 2.0235 ns/op
IdleTarget 7: 1048576 op, 2123712.02 ns, 2.0253 ns/op
IdleTarget 8: 1048576 op, 2116109.69 ns, 2.0181 ns/op
IdleTarget 9: 1048576 op, 2110788.05 ns, 2.0130 ns/op
IdleTarget 10: 1048576 op, 2115729.57 ns, 2.0177 ns/op

MainWarmup 1: 1048576 op, 213668160.4 ns, 203.7698 ns/op
MainWarmup 2: 1048576 op, 217481871.28 ns, 207.4069 ns/op
MainWarmup 3: 1048576 op, 213592137.06 ns, 203.6973 ns/op
MainWarmup 4: 1048576 op, 215949620.85 ns, 205.9456 ns/op
MainWarmup 5: 1048576 op, 215467252.76 ns, 205.4856 ns/op
MainWarmup 6: 1048576 op, 214267224.32 ns, 204.3411 ns/op
MainWarmup 7: 1048576 op, 214806229.81 ns, 204.8552 ns/op

MainTarget 1: 1048576 op, 214783422.81 ns, 204.8334 ns/op
MainTarget 2: 1048576 op, 214924826.22 ns, 204.9683 ns/op
MainTarget 3: 1048576 op, 214080967.14 ns, 204.1635 ns/op
MainTarget 4: 1048576 op, 215121346.56 ns, 205.1557 ns/op
MainTarget 5: 1048576 op, 216494708.21 ns, 206.4654 ns/op
MainTarget 6: 1048576 op, 215293159.31 ns, 205.3196 ns/op
MainTarget 7: 1048576 op, 224079937.02 ns, 213.6993 ns/op
MainTarget 8: 1048576 op, 216566170.15 ns, 206.5336 ns/op
MainTarget 9: 1048576 op, 215920731.98 ns, 205.9181 ns/op
MainTarget 10: 1048576 op, 213774593.08 ns, 203.8713 ns/op

Result 1: 1048576 op, 212667503.18 ns, 202.8155 ns/op
Result 2: 1048576 op, 212808906.59 ns, 202.9504 ns/op
Result 3: 1048576 op, 211965047.51 ns, 202.1456 ns/op
Result 4: 1048576 op, 213005426.93 ns, 203.1378 ns/op
Result 5: 1048576 op, 214378788.58 ns, 204.4475 ns/op
Result 6: 1048576 op, 213177239.68 ns, 203.3017 ns/op
Result 7: 1048576 op, 221964017.39 ns, 211.6814 ns/op
Result 8: 1048576 op, 214450250.52 ns, 204.5157 ns/op
Result 9: 1048576 op, 213804812.35 ns, 203.9002 ns/op
Result 10: 1048576 op, 211658673.45 ns, 201.8534 ns/op

// Launch: 2
// BenchmarkDotNet-Dev=v0.9.1.0+
// OS=Microsoft Windows NT 6.1.7601 Service Pack 1
// Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
// Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
// CLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
// JitModules=clrjit-v4.6.100.0

Pilot 1: 4 op, 254298.07 ns, 63.5745 us/op
Pilot 2: 8 op, 10643.27 ns, 1.3304 us/op
Pilot 3: 16 op, 11403.5 ns, 712.7188 ns/op
Pilot 4: 32 op, 15204.67 ns, 475.1459 ns/op
Pilot 5: 64 op, 28888.87 ns, 451.3886 ns/op
Pilot 6: 128 op, 50175.4 ns, 391.9954 ns/op
Pilot 7: 256 op, 99210.46 ns, 387.5409 ns/op
Pilot 8: 512 op, 204122.67 ns, 398.6771 ns/op
Pilot 9: 1024 op, 384678.1 ns, 375.6622 ns/op
Pilot 10: 2048 op, 781139.83 ns, 381.4159 ns/op
Pilot 11: 4096 op, 1675554.43 ns, 409.0709 ns/op
Pilot 12: 8192 op, 3332483.14 ns, 406.7973 ns/op
Pilot 13: 16384 op, 6638358.11 ns, 405.1732 ns/op
Pilot 14: 32768 op, 7008971.89 ns, 213.8968 ns/op
Pilot 15: 65536 op, 13306745.44 ns, 203.0448 ns/op
Pilot 16: 131072 op, 26607409.01 ns, 202.9984 ns/op
Pilot 17: 262144 op, 54109232.62 ns, 206.4103 ns/op
Pilot 18: 524288 op, 106948875.44 ns, 203.9888 ns/op
Pilot 19: 1048576 op, 214950294.04 ns, 204.9926 ns/op

IdleWarmup 1: 1048576 op, 2159442.99 ns, 2.0594 ns/op
IdleWarmup 2: 1048576 op, 2118390.39 ns, 2.0203 ns/op
IdleWarmup 3: 1048576 op, 2119530.74 ns, 2.0213 ns/op
IdleWarmup 4: 1048576 op, 2116489.8 ns, 2.0184 ns/op
IdleWarmup 5: 1048576 op, 2117630.15 ns, 2.0195 ns/op
IdleWarmup 6: 1048576 op, 2113828.99 ns, 2.0159 ns/op
IdleWarmup 7: 1048576 op, 2116109.69 ns, 2.0181 ns/op

IdleTarget 1: 1048576 op, 2113828.99 ns, 2.0159 ns/op
IdleTarget 2: 1048576 op, 2106226.65 ns, 2.0087 ns/op
IdleTarget 3: 1048576 op, 2102805.6 ns, 2.0054 ns/op
IdleTarget 4: 1048576 op, 2143097.97 ns, 2.0438 ns/op
IdleTarget 5: 1048576 op, 2109267.59 ns, 2.0116 ns/op
IdleTarget 6: 1048576 op, 2131694.47 ns, 2.0329 ns/op
IdleTarget 7: 1048576 op, 2121811.44 ns, 2.0235 ns/op
IdleTarget 8: 1048576 op, 2118770.5 ns, 2.0206 ns/op
IdleTarget 9: 1048576 op, 2116489.8 ns, 2.0184 ns/op
IdleTarget 10: 1048576 op, 2322513.06 ns, 2.2149 ns/op

MainWarmup 1: 1048576 op, 227694466.76 ns, 217.1464 ns/op
MainWarmup 2: 1048576 op, 213296786.38 ns, 203.4157 ns/op
MainWarmup 3: 1048576 op, 213273599.26 ns, 203.3936 ns/op
MainWarmup 4: 1048576 op, 214803188.88 ns, 204.8523 ns/op
MainWarmup 5: 1048576 op, 215461170.89 ns, 205.4798 ns/op
MainWarmup 6: 1048576 op, 217630496.92 ns, 207.5486 ns/op

MainTarget 1: 1048576 op, 214757194.75 ns, 204.8084 ns/op
MainTarget 2: 1048576 op, 215472574.39 ns, 205.4907 ns/op
MainTarget 3: 1048576 op, 250027463.43 ns, 238.4448 ns/op
MainTarget 4: 1048576 op, 250560006.93 ns, 238.9526 ns/op
MainTarget 5: 1048576 op, 215831404.56 ns, 205.8329 ns/op
MainTarget 6: 1048576 op, 222909557.69 ns, 212.5831 ns/op
MainTarget 7: 1048576 op, 242720480.04 ns, 231.4763 ns/op
MainTarget 8: 1048576 op, 222576955.58 ns, 212.2659 ns/op
MainTarget 9: 1048576 op, 213794739.26 ns, 203.8906 ns/op
MainTarget 10: 1048576 op, 218125408.86 ns, 208.0206 ns/op
MainTarget 11: 1048576 op, 214883393.5 ns, 204.9288 ns/op
MainTarget 12: 1048576 op, 218925174.41 ns, 208.7833 ns/op
MainTarget 13: 1048576 op, 216339620.59 ns, 206.3175 ns/op
MainTarget 14: 1048576 op, 216377632.26 ns, 206.3538 ns/op

Result 1: 1048576 op, 212639564.6 ns, 202.7889 ns/op
Result 2: 1048576 op, 213354944.23 ns, 203.4711 ns/op
Result 3: 1048576 op, 247909833.28 ns, 236.4252 ns/op
Result 4: 1048576 op, 248442376.78 ns, 236.9331 ns/op
Result 5: 1048576 op, 213713774.4 ns, 203.8133 ns/op
Result 6: 1048576 op, 220791927.54 ns, 210.5636 ns/op
Result 7: 1048576 op, 240602849.89 ns, 229.4568 ns/op
Result 8: 1048576 op, 220459325.42 ns, 210.2464 ns/op
Result 9: 1048576 op, 211677109.11 ns, 201.8710 ns/op
Result 10: 1048576 op, 216007778.71 ns, 206.0011 ns/op
Result 11: 1048576 op, 212765763.34 ns, 202.9092 ns/op
Result 12: 1048576 op, 216807544.25 ns, 206.7638 ns/op
Result 13: 1048576 op, 214221990.44 ns, 204.2980 ns/op
Result 14: 1048576 op, 214260002.11 ns, 204.3343 ns/op

// Run, Diagnostic
// BenchmarkDotNet-Dev=v0.9.1.0+
// OS=Microsoft Windows NT 6.1.7601 Service Pack 1
// Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
// Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
// CLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
// JitModules=clrjit-v4.6.100.0

Pilot 1: 4 op, 306754.18 ns, 76.6885 us/op
Pilot 2: 8 op, 16725.13 ns, 2.0906 us/op
Pilot 3: 16 op, 9502.92 ns, 593.9323 ns/op
Pilot 4: 32 op, 17485.37 ns, 546.4178 ns/op
Pilot 5: 64 op, 28128.64 ns, 439.5099 ns/op
Pilot 6: 128 op, 52075.99 ns, 406.8437 ns/op
Pilot 7: 256 op, 100730.93 ns, 393.4802 ns/op
Pilot 8: 512 op, 199181.15 ns, 389.0257 ns/op
Pilot 9: 1024 op, 404824.29 ns, 395.3362 ns/op
Pilot 10: 2048 op, 824473.13 ns, 402.5748 ns/op
Pilot 11: 4096 op, 1791870.14 ns, 437.4683 ns/op
Pilot 12: 8192 op, 3432453.83 ns, 419.0007 ns/op
Pilot 13: 16384 op, 5545522.59 ns, 338.4718 ns/op
Pilot 14: 32768 op, 7877538.56 ns, 240.4034 ns/op
Pilot 15: 65536 op, 13853353.26 ns, 211.3854 ns/op
Pilot 16: 131072 op, 27786150.9 ns, 211.9915 ns/op
Pilot 17: 262144 op, 54449437.07 ns, 207.7081 ns/op
Pilot 18: 524288 op, 110807440.1 ns, 211.3484 ns/op
Pilot 19: 1048576 op, 220648243.42 ns, 210.4266 ns/op

IdleWarmup 1: 1048576 op, 2129033.66 ns, 2.0304 ns/op
IdleWarmup 2: 1048576 op, 2113448.87 ns, 2.0155 ns/op
IdleWarmup 3: 1048576 op, 2113448.87 ns, 2.0155 ns/op
IdleWarmup 4: 1048576 op, 2131314.36 ns, 2.0326 ns/op
IdleWarmup 5: 1048576 op, 2116109.69 ns, 2.0181 ns/op
IdleWarmup 6: 1048576 op, 2114969.34 ns, 2.0170 ns/op
IdleWarmup 7: 1048576 op, 2114589.22 ns, 2.0166 ns/op
IdleWarmup 8: 1048576 op, 2123712.02 ns, 2.0253 ns/op

IdleTarget 1: 1048576 op, 2104326.07 ns, 2.0068 ns/op
IdleTarget 2: 1048576 op, 2106606.77 ns, 2.0090 ns/op
IdleTarget 3: 1048576 op, 2105086.3 ns, 2.0076 ns/op
IdleTarget 4: 1048576 op, 2115729.57 ns, 2.0177 ns/op
IdleTarget 5: 1048576 op, 2131314.36 ns, 2.0326 ns/op
IdleTarget 6: 1048576 op, 2119910.86 ns, 2.0217 ns/op
IdleTarget 7: 1048576 op, 2123712.02 ns, 2.0253 ns/op
IdleTarget 8: 1048576 op, 2133595.06 ns, 2.0348 ns/op
IdleTarget 9: 1048576 op, 2123712.02 ns, 2.0253 ns/op
IdleTarget 10: 1048576 op, 2114969.34 ns, 2.0170 ns/op

MainWarmup 1: 1048576 op, 224675960.01 ns, 214.2677 ns/op
MainWarmup 2: 1048576 op, 219156665.48 ns, 209.0041 ns/op
MainWarmup 3: 1048576 op, 225210404.1 ns, 214.7774 ns/op
MainWarmup 4: 1048576 op, 219769033.49 ns, 209.5881 ns/op
MainWarmup 5: 1048576 op, 219057455.02 ns, 208.9095 ns/op
MainWarmup 6: 1048576 op, 221062190.51 ns, 210.8213 ns/op
MainWarmup 7: 1048576 op, 223843504.43 ns, 213.4738 ns/op

MainTarget 1: 1048576 op, 219393478.19 ns, 209.2299 ns/op
MainTarget 2: 1048576 op, 220498097.33 ns, 210.2834 ns/op
MainTarget 3: 1048576 op, 222367511.27 ns, 212.0662 ns/op
MainTarget 4: 1048576 op, 223131545.85 ns, 212.7948 ns/op
MainTarget 5: 1048576 op, 220851225.74 ns, 210.6201 ns/op
MainTarget 6: 1048576 op, 220038536.23 ns, 209.8451 ns/op
MainTarget 7: 1048576 op, 223928270.46 ns, 213.5546 ns/op
MainTarget 8: 1048576 op, 220320962.94 ns, 210.1144 ns/op
MainTarget 9: 1048576 op, 220137366.57 ns, 209.9394 ns/op
MainTarget 10: 1048576 op, 219234589.4 ns, 209.0784 ns/op

Result 1: 1048576 op, 217275657.97 ns, 207.2102 ns/op
Result 2: 1048576 op, 218380277.11 ns, 208.2637 ns/op
Result 3: 1048576 op, 220249691.06 ns, 210.0465 ns/op
Result 4: 1048576 op, 221013725.63 ns, 210.7751 ns/op
Result 5: 1048576 op, 218733405.53 ns, 208.6004 ns/op
Result 6: 1048576 op, 217920716.02 ns, 207.8254 ns/op
Result 7: 1048576 op, 221810450.24 ns, 211.5349 ns/op
Result 8: 1048576 op, 218203142.73 ns, 208.0947 ns/op
Result 9: 1048576 op, 218019546.36 ns, 207.9196 ns/op
Result 10: 1048576 op, 217116769.19 ns, 207.0587 ns/op

Mean = 208.3594 ns, StdError = 2.1284 ns (1.02%); N = 24, StdDev = 10.4271 ns
Min = 201.8534 ns, Q1 = 202.9298 ns, Median = 204.0991 ns, Q3 = 208.5051 ns, Max = 236.9331 ns
IQR = 5.5753 ns, LowerFence = 194.5669 ns, UpperFence = 216.8680 ns
ConfidenceInterval = [204.1877 ns; 212.5311 ns](CI 95%)

// **************************
// Benchmark: Framework_Interpolated_vs_ToString_ToString
// *** Generate ***
// Result = Success
// DirectoryPath = C:\Users\warma11\Downloads__GitHub__\BenchmarkDotNet\BenchmarkDotNet.Samples\bin\Release\Framework_Interpolated_vs_ToString_ToString

// *** Build ***
// Result = Success

// *** Execute ***
// Launch: 1
// BenchmarkDotNet-Dev=v0.9.1.0+
// OS=Microsoft Windows NT 6.1.7601 Service Pack 1
// Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
// Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
// CLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
// JitModules=clrjit-v4.6.100.0

Pilot 1: 4 op, 357689.82 ns, 89.4225 us/op
Pilot 2: 8 op, 5701.75 ns, 712.7188 ns/op
Pilot 3: 16 op, 5321.63 ns, 332.6021 ns/op
Pilot 4: 32 op, 6842.1 ns, 213.8156 ns/op
Pilot 5: 64 op, 10643.27 ns, 166.3011 ns/op
Pilot 6: 128 op, 18625.72 ns, 145.5134 ns/op
Pilot 7: 256 op, 38391.79 ns, 149.9679 ns/op
Pilot 8: 512 op, 70701.71 ns, 138.0893 ns/op
Pilot 9: 1024 op, 138742.6 ns, 135.4908 ns/op
Pilot 10: 2048 op, 279385.78 ns, 136.4188 ns/op
Pilot 11: 4096 op, 594882.64 ns, 145.2350 ns/op
Pilot 12: 8192 op, 1228157.07 ns, 149.9215 ns/op
Pilot 13: 16384 op, 2606840.35 ns, 159.1089 ns/op
Pilot 14: 32768 op, 5120932.23 ns, 156.2784 ns/op
Pilot 15: 65536 op, 8761309.9 ns, 133.6870 ns/op
Pilot 16: 131072 op, 12013208.3 ns, 91.6535 ns/op
Pilot 17: 262144 op, 23780481.08 ns, 90.7153 ns/op
Pilot 18: 524288 op, 46673389.66 ns, 89.0224 ns/op
Pilot 19: 1048576 op, 92968563.21 ns, 88.6617 ns/op
Pilot 20: 2097152 op, 188808527.99 ns, 90.0309 ns/op
Pilot 21: 4194304 op, 371080949.27 ns, 88.4726 ns/op

IdleWarmup 1: 4194304 op, 8672362.59 ns, 2.0677 ns/op
IdleWarmup 2: 4194304 op, 8501690.19 ns, 2.0270 ns/op
IdleWarmup 3: 4194304 op, 8429848.13 ns, 2.0098 ns/op
IdleWarmup 4: 4194304 op, 8432128.83 ns, 2.0104 ns/op
IdleWarmup 5: 4194304 op, 8438970.93 ns, 2.0120 ns/op
IdleWarmup 6: 4194304 op, 8433649.3 ns, 2.0107 ns/op
IdleWarmup 7: 4194304 op, 8430988.48 ns, 2.0101 ns/op
IdleWarmup 8: 4194304 op, 8437830.58 ns, 2.0117 ns/op

IdleTarget 1: 4194304 op, 8529438.71 ns, 2.0336 ns/op
IdleTarget 2: 4194304 op, 8425286.73 ns, 2.0087 ns/op
IdleTarget 3: 4194304 op, 8725578.93 ns, 2.0803 ns/op
IdleTarget 4: 4194304 op, 8457596.65 ns, 2.0164 ns/op
IdleTarget 5: 4194304 op, 8453415.37 ns, 2.0155 ns/op
IdleTarget 6: 4194304 op, 8444292.57 ns, 2.0133 ns/op
IdleTarget 7: 4194304 op, 8437830.58 ns, 2.0117 ns/op
IdleTarget 8: 4194304 op, 8616865.55 ns, 2.0544 ns/op
IdleTarget 9: 4194304 op, 8429848.13 ns, 2.0098 ns/op
IdleTarget 10: 4194304 op, 8500169.72 ns, 2.0266 ns/op

MainWarmup 1: 4194304 op, 373373052.99 ns, 89.0191 ns/op
MainWarmup 2: 4194304 op, 374642262.67 ns, 89.3217 ns/op
MainWarmup 3: 4194304 op, 373808286.62 ns, 89.1228 ns/op
MainWarmup 4: 4194304 op, 374166356.55 ns, 89.2082 ns/op
MainWarmup 5: 4194304 op, 371902001.35 ns, 88.6683 ns/op
MainWarmup 6: 4194304 op, 373881269.03 ns, 89.1402 ns/op

MainTarget 1: 4194304 op, 377094395.52 ns, 89.9063 ns/op
MainTarget 2: 4194304 op, 374858929.19 ns, 89.3733 ns/op
MainTarget 3: 4194304 op, 380139510.43 ns, 90.6323 ns/op
MainTarget 4: 4194304 op, 373810947.44 ns, 89.1235 ns/op
MainTarget 5: 4194304 op, 382703777.71 ns, 91.2437 ns/op
MainTarget 6: 4194304 op, 375190390.95 ns, 89.4524 ns/op
MainTarget 7: 4194304 op, 372166182.46 ns, 88.7313 ns/op
MainTarget 8: 4194304 op, 373403462.33 ns, 89.0263 ns/op
MainTarget 9: 4194304 op, 369957704.41 ns, 88.2048 ns/op
MainTarget 10: 4194304 op, 375269455.23 ns, 89.4712 ns/op

Result 1: 4194304 op, 368638889.51 ns, 87.8904 ns/op
Result 2: 4194304 op, 366403423.18 ns, 87.3574 ns/op
Result 3: 4194304 op, 371684004.42 ns, 88.6164 ns/op
Result 4: 4194304 op, 365355441.43 ns, 87.1075 ns/op
Result 5: 4194304 op, 374248271.7 ns, 89.2277 ns/op
Result 6: 4194304 op, 366734884.94 ns, 87.4364 ns/op
Result 7: 4194304 op, 363710676.45 ns, 86.7154 ns/op
Result 8: 4194304 op, 364947956.32 ns, 87.0104 ns/op
Result 9: 4194304 op, 361502198.4 ns, 86.1888 ns/op
Result 10: 4194304 op, 366813949.22 ns, 87.4553 ns/op

// Launch: 2
// BenchmarkDotNet-Dev=v0.9.1.0+
// OS=Microsoft Windows NT 6.1.7601 Service Pack 1
// Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
// Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
// CLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
// JitModules=clrjit-v4.6.100.0

Pilot 1: 4 op, 360730.75 ns, 90.1827 us/op
Pilot 2: 8 op, 8362.57 ns, 1.0453 us/op
Pilot 3: 16 op, 5701.75 ns, 356.3594 ns/op
Pilot 4: 32 op, 7982.45 ns, 249.4516 ns/op
Pilot 5: 64 op, 14444.43 ns, 225.6943 ns/op
Pilot 6: 128 op, 26608.17 ns, 207.8763 ns/op
Pilot 7: 256 op, 50935.64 ns, 198.9673 ns/op
Pilot 8: 512 op, 99210.46 ns, 193.7704 ns/op
Pilot 9: 1024 op, 198801.04 ns, 194.1416 ns/op
Pilot 10: 2048 op, 398362.31 ns, 194.5128 ns/op
Pilot 11: 4096 op, 851081.3 ns, 207.7835 ns/op
Pilot 12: 8192 op, 1703683.06 ns, 207.9691 ns/op
Pilot 13: 16384 op, 3564734.44 ns, 217.5741 ns/op
Pilot 14: 32768 op, 3784441.9 ns, 115.4920 ns/op
Pilot 15: 65536 op, 7208533.16 ns, 109.9935 ns/op
Pilot 16: 131072 op, 11885108.97 ns, 90.6762 ns/op
Pilot 17: 262144 op, 23468405.27 ns, 89.5249 ns/op
Pilot 18: 524288 op, 46214588.8 ns, 88.1473 ns/op
Pilot 19: 1048576 op, 92465288.69 ns, 88.1818 ns/op
Pilot 20: 2097152 op, 192423057.73 ns, 91.7545 ns/op
Pilot 21: 4194304 op, 374376180.98 ns, 89.2582 ns/op

IdleWarmup 1: 4194304 op, 8416163.93 ns, 2.0066 ns/op
IdleWarmup 2: 4194304 op, 8459497.23 ns, 2.0169 ns/op
IdleWarmup 3: 4194304 op, 8432508.95 ns, 2.0105 ns/op
IdleWarmup 4: 4194304 op, 8439731.17 ns, 2.0122 ns/op
IdleWarmup 5: 4194304 op, 8917537.86 ns, 2.1261 ns/op

IdleTarget 1: 4194304 op, 8442011.87 ns, 2.0127 ns/op
IdleTarget 2: 4194304 op, 8621426.95 ns, 2.0555 ns/op
IdleTarget 3: 4194304 op, 8473561.55 ns, 2.0203 ns/op
IdleTarget 4: 4194304 op, 8475842.25 ns, 2.0208 ns/op
IdleTarget 5: 4194304 op, 8618386.02 ns, 2.0548 ns/op
IdleTarget 6: 4194304 op, 8459497.23 ns, 2.0169 ns/op
IdleTarget 7: 4194304 op, 8559848.04 ns, 2.0408 ns/op
IdleTarget 8: 4194304 op, 8436690.23 ns, 2.0115 ns/op
IdleTarget 9: 4194304 op, 8446193.15 ns, 2.0137 ns/op
IdleTarget 10: 4194304 op, 8600520.53 ns, 2.0505 ns/op

MainWarmup 1: 4194304 op, 371997030.53 ns, 88.6910 ns/op
MainWarmup 2: 4194304 op, 371642761.76 ns, 88.6065 ns/op
MainWarmup 3: 4194304 op, 369633084.75 ns, 88.1274 ns/op
MainWarmup 4: 4194304 op, 370370891.27 ns, 88.3033 ns/op
MainWarmup 5: 4194304 op, 370896592.67 ns, 88.4286 ns/op
MainWarmup 6: 4194304 op, 373693871.49 ns, 89.0956 ns/op

MainTarget 1: 4194304 op, 369321008.94 ns, 88.0530 ns/op
MainTarget 2: 4194304 op, 370238230.54 ns, 88.2717 ns/op
MainTarget 3: 4194304 op, 370440072.51 ns, 88.3198 ns/op
MainTarget 4: 4194304 op, 371745393.27 ns, 88.6310 ns/op
MainTarget 5: 4194304 op, 370693990.47 ns, 88.3803 ns/op
MainTarget 6: 4194304 op, 371865510.15 ns, 88.6596 ns/op
MainTarget 7: 4194304 op, 370899633.61 ns, 88.4294 ns/op
MainTarget 8: 4194304 op, 371846884.43 ns, 88.6552 ns/op
MainTarget 9: 4194304 op, 376358489.58 ns, 89.7309 ns/op
MainTarget 10: 4194304 op, 371093113.01 ns, 88.4755 ns/op

Result 1: 4194304 op, 360846307.03 ns, 86.0325 ns/op
Result 2: 4194304 op, 361763528.64 ns, 86.2511 ns/op
Result 3: 4194304 op, 361965370.61 ns, 86.2993 ns/op
Result 4: 4194304 op, 363270691.37 ns, 86.6105 ns/op
Result 5: 4194304 op, 362219288.57 ns, 86.3598 ns/op
Result 6: 4194304 op, 363390808.25 ns, 86.6391 ns/op
Result 7: 4194304 op, 362424931.7 ns, 86.4088 ns/op
Result 8: 4194304 op, 363372182.53 ns, 86.6347 ns/op
Result 9: 4194304 op, 367883787.68 ns, 87.7103 ns/op
Result 10: 4194304 op, 362618411.1 ns, 86.4550 ns/op

// Run, Diagnostic
// BenchmarkDotNet-Dev=v0.9.1.0+
// OS=Microsoft Windows NT 6.1.7601 Service Pack 1
// Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
// Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
// CLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
// JitModules=clrjit-v4.6.100.0

Pilot 1: 4 op, 163830.3 ns, 40.9576 us/op
Pilot 2: 8 op, 3421.05 ns, 427.6313 ns/op
Pilot 3: 16 op, 2660.82 ns, 166.3011 ns/op
Pilot 4: 32 op, 4181.28 ns, 130.6651 ns/op
Pilot 5: 64 op, 6461.98 ns, 100.9685 ns/op
Pilot 6: 128 op, 12163.73 ns, 95.0292 ns/op
Pilot 7: 256 op, 25467.82 ns, 99.4837 ns/op
Pilot 8: 512 op, 45994.12 ns, 89.8323 ns/op
Pilot 9: 1024 op, 91988.24 ns, 89.8323 ns/op
Pilot 10: 2048 op, 195760.1 ns, 95.5860 ns/op
Pilot 11: 4096 op, 409005.57 ns, 99.8549 ns/op
Pilot 12: 8192 op, 780759.71 ns, 95.3076 ns/op
Pilot 13: 16384 op, 1703302.95 ns, 103.9614 ns/op
Pilot 14: 32768 op, 3691313.31 ns, 112.6499 ns/op
Pilot 15: 65536 op, 7124907.49 ns, 108.7175 ns/op
Pilot 16: 131072 op, 11923880.87 ns, 90.9720 ns/op
Pilot 17: 262144 op, 23598025.07 ns, 90.0193 ns/op
Pilot 18: 524288 op, 47211634.92 ns, 90.0490 ns/op
Pilot 19: 1048576 op, 92643183.31 ns, 88.3514 ns/op
Pilot 20: 2097152 op, 190810982.79 ns, 90.9858 ns/op
Pilot 21: 4194304 op, 376653840.26 ns, 89.8013 ns/op

IdleWarmup 1: 4194304 op, 8399818.91 ns, 2.0027 ns/op
IdleWarmup 2: 4194304 op, 8428327.67 ns, 2.0095 ns/op
IdleWarmup 3: 4194304 op, 8450374.43 ns, 2.0147 ns/op
IdleWarmup 4: 4194304 op, 8440491.4 ns, 2.0124 ns/op
IdleWarmup 5: 4194304 op, 8481544 ns, 2.0222 ns/op

IdleTarget 1: 4194304 op, 8712274.84 ns, 2.0772 ns/op
IdleTarget 2: 4194304 op, 8413503.11 ns, 2.0059 ns/op
IdleTarget 3: 4194304 op, 8429468.02 ns, 2.0097 ns/op
IdleTarget 4: 4194304 op, 8576573.18 ns, 2.0448 ns/op
IdleTarget 5: 4194304 op, 8628649.17 ns, 2.0572 ns/op
IdleTarget 6: 4194304 op, 8573912.36 ns, 2.0442 ns/op
IdleTarget 7: 4194304 op, 8462918.29 ns, 2.0177 ns/op
IdleTarget 8: 4194304 op, 8423766.26 ns, 2.0084 ns/op
IdleTarget 9: 4194304 op, 8432128.83 ns, 2.0104 ns/op
IdleTarget 10: 4194304 op, 8516134.62 ns, 2.0304 ns/op

MainWarmup 1: 4194304 op, 376447436.89 ns, 89.7521 ns/op
MainWarmup 2: 4194304 op, 375540478.44 ns, 89.5358 ns/op
MainWarmup 3: 4194304 op, 384164946.32 ns, 91.5921 ns/op
MainWarmup 4: 4194304 op, 377513284.13 ns, 90.0062 ns/op
MainWarmup 5: 4194304 op, 377012290.31 ns, 89.8867 ns/op
MainWarmup 6: 4194304 op, 375214338.31 ns, 89.4581 ns/op
MainWarmup 7: 4194304 op, 375529835.17 ns, 89.5333 ns/op
MainWarmup 8: 4194304 op, 374100216.25 ns, 89.1924 ns/op
MainWarmup 9: 4194304 op, 372822263.89 ns, 88.8878 ns/op
MainWarmup 10: 4194304 op, 375009835.52 ns, 89.4093 ns/op

MainTarget 1: 4194304 op, 373574134.73 ns, 89.0670 ns/op
MainTarget 2: 4194304 op, 375717992.94 ns, 89.5782 ns/op
MainTarget 3: 4194304 op, 375970390.43 ns, 89.6383 ns/op
MainTarget 4: 4194304 op, 375745361.34 ns, 89.5847 ns/op
MainTarget 5: 4194304 op, 374961560.7 ns, 89.3978 ns/op
MainTarget 6: 4194304 op, 377950418.34 ns, 90.1104 ns/op
MainTarget 7: 4194304 op, 374289134.25 ns, 89.2375 ns/op
MainTarget 8: 4194304 op, 375946823.19 ns, 89.6327 ns/op
MainTarget 9: 4194304 op, 384843074.52 ns, 91.7537 ns/op
MainTarget 10: 4194304 op, 375355741.72 ns, 89.4918 ns/op

Result 1: 4194304 op, 365084608.28 ns, 87.0430 ns/op
Result 2: 4194304 op, 367228466.48 ns, 87.5541 ns/op
Result 3: 4194304 op, 367480863.97 ns, 87.6143 ns/op
Result 4: 4194304 op, 367255834.89 ns, 87.5606 ns/op
Result 5: 4194304 op, 366472034.24 ns, 87.3737 ns/op
Result 6: 4194304 op, 369460891.88 ns, 88.0863 ns/op
Result 7: 4194304 op, 365799607.8 ns, 87.2134 ns/op
Result 8: 4194304 op, 367457296.74 ns, 87.6086 ns/op
Result 9: 4194304 op, 376353548.07 ns, 89.7297 ns/op
Result 10: 4194304 op, 366866215.27 ns, 87.4677 ns/op

Mean = 87.0203 ns, StdError = 0.1892 ns (0.22%); N = 20, StdDev = 0.8461 ns
Min = 86.0325 ns, Q1 = 86.3843 ns, Median = 86.6773 ns, Q3 = 87.4458 ns, Max = 89.2277 ns
IQR = 1.0615 ns, LowerFence = 84.7921 ns, UpperFence = 89.0381 ns
ConfidenceInterval = [86.6495 ns; 87.3911 ns](CI 95%)

// ***** BenchmarkRunner: Finish *****

// * Export *
Framework_Interpolated_vs_ToString-report.csv
Framework_Interpolated_vs_ToString-report-stackoverflow.md
Framework_Interpolated_vs_ToString-report-default.md
Framework_Interpolated_vs_ToString-report-github.md
Framework_Interpolated_vs_ToString-report.txt
Framework_Interpolated_vs_ToString-measurements.csv
BuildPlots.R
Framework_Interpolated_vs_ToString-report.html

// * Detailed results *
Framework_Interpolated_vs_ToString_InterpolatedString
Mean = 208.3594 ns, StdError = 2.1284 ns (1.02%); N = 24, StdDev = 10.4271 ns
Min = 201.8534 ns, Q1 = 202.9298 ns, Median = 204.0991 ns, Q3 = 208.5051 ns, Max = 236.9331 ns
IQR = 5.5753 ns, LowerFence = 194.5669 ns, UpperFence = 216.8680 ns
ConfidenceInterval = [204.1877 ns; 212.5311 ns](CI 95%)

Framework_Interpolated_vs_ToString_ToString
Mean = 87.0203 ns, StdError = 0.1892 ns (0.22%); N = 20, StdDev = 0.8461 ns
Min = 86.0325 ns, Q1 = 86.3843 ns, Median = 86.6773 ns, Q3 = 87.4458 ns, Max = 89.2277 ns
IQR = 1.0615 ns, LowerFence = 84.7921 ns, UpperFence = 89.0381 ns
ConfidenceInterval = [86.6495 ns; 87.3911 ns](CI 95%)

Total time: 00:00:48 (48.24 sec)

// * Summary *
BenchmarkDotNet-Dev=v0.9.1.0+
OS=Microsoft Windows NT 6.1.7601 Service Pack 1
Processor=Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz, ProcessorCount=8
Frequency=2630771 ticks, Resolution=380.1167 ns, Timer=TSC
HostCLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]
JitModules=clrjit-v4.6.100.0

Type=Framework_Interpolated_vs_ToString Mode=Throughput

Method Median StdDev Gen 0 Gen 1 Gen 2 Memory Traffic/Op
InterpolatedString 204.0991 ns 10.4271 ns 607 - - 38.98 B
ToString 86.6773 ns 0.8461 ns 522 - - 33.87 B

// * Diagnostic Output - GCDiagnoser *

// ***** BenchmarkRunner: End *****

@gitfool
Copy link

gitfool commented Dec 16, 2016

How does it scale with the number of interpolated parameters?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment