int valType = 15;
int valType = 15; Object refType = valType;
Console.WriteLine(20);
Console.WriteLine("{0}", 20);
// Console.WriteLine(20); IL_0000: ldc.i4.s 20 IL_0002: call void [mscorlib]System.Console::WriteLine(int32) // Console.WriteLine("{0}", 20); IL_0007: ldstr "{0}" IL_000c: ldc.i4.s 20 IL_000e: box [mscorlib]System.Int32 IL_0013: call void [mscorlib]System.Console::WriteLine(string, object)
void WriteLine(int value);
void WriteLine(string format, object arg0);
static void Main() { // , var val = 15; // , Object obj = val; // - =) const int cycles = 1000000; var str = ""; // var results = new List<TimeSpan>(); // 20 , for (var j = 0; j < 20; j++) { // var start = DateTime.Now; for (var i = 0; i < cycles; i++) { // 10 // str = String.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}", obj, obj, obj, obj, obj, obj, obj, obj, obj, obj); } // var end = DateTime.Now; // (box) var objResult = end.Subtract(start); // start = DateTime.Now; for (var i = 0; i < cycles; i++) { // // 10 (box) str = String.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}", val, val, val, val, val, val, val, val, val, val); } // end = DateTime.Now; // , 10 var valResult = end.Subtract(start); // results.Add(valResult.Subtract(objResult)); } // foreach (var timeDif in results) { Console.WriteLine(timeDif); } // Console.WriteLine(); Console.Write("Milliseconds need for 10KK boxing operations: "); Console.WriteLine(results.Aggregate(TimeSpan.Zero, (sum, current) => sum.Add(current)).TotalMilliseconds / results.Count); }
00:00:00.0600060 00:00:00.0770077 00:00:00.0570057 00:00:00.0710071 00:00:00.0680068 00:00:00.0650065 00:00:00.0530053 00:00:00.0740074 00:00:00.0570057 00:00:00.0580058 00:00:00.0590059 00:00:00.0500050 00:00:00.0550055 00:00:00.0720072 00:00:00.0800080 00:00:00.0640064 00:00:00.0640064 00:00:00.0670067 00:00:00.0660066 00:00:00.0590059 Milliseconds need for 10KK boxing operations: 63,80638
Cache warming results: 00:00:00.0505219 00:00:00.0491484 00:00:00.0527804 00:00:00.0586028 00:00:00.0595744 00:00:00.0573599 00:00:00.0678498 00:00:00.0560197 00:00:00.0591139 00:00:00.0382205 00:00:00.0602378 00:00:00.0862110 00:00:00.0632895 00:00:00.0584091 00:00:00.0556713 00:00:00.0572194 00:00:00.0544349 00:00:00.0750407 00:00:00.0579586 00:00:00.0561487 Test results: 00:00:00.0640218 00:00:00.0558972 00:00:00.0612732 00:00:00.0560300 00:00:00.0547193 00:00:00.0556158 00:00:00.0558210 00:00:00.0554421 00:00:00.0632168 00:00:00.0611355 00:00:00.0539173 00:00:00.0594863 00:00:00.0549896 00:00:00.0585462 00:00:00.0598485 00:00:00.0586522 00:00:00.0560457 00:00:00.0568806 00:00:00.0784523 00:00:00.0521756 Milliseconds need for 10KK boxing operations: 58,60835
Source: https://habr.com/ru/post/210108/
All Articles