using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
#region Constansts and Statics
public const int Repetitions = 1000000;
public const string Part1 = "Part 1";
public const string Part2 = "Part 2";
public const string Part3 = "Part 3";
public static Stopwatch Watch = new Stopwatch();
public static void Main()
Console.WriteLine("The purpose of this test is to see which string medho\n");
var vPart1 = GetPartBy(1);
var vPart2 = GetPartBy(2);
var vPart3 = GetPartBy(3);
TestStringsBy("const string interpolation ", () => $"{Part1}{Part2}{Part3}");
TestStringsBy("const string concatenation ", () => string.Concat(Part1, Part2, Part3));
TestStringsBy("const string addition ", () => Part1 + Part2 + Part3);
TestStringsBy("var string interpolation ", () => $"{vPart1}{vPart2}{vPart3}");
TestStringsBy("var string concatenation ", () => string.Concat(vPart1, vPart2, vPart3));
TestStringsBy("var string addition ", () => vPart1 + vPart2 + vPart3);
TestStringsBy("mixed string interpolation ", () => $"{vPart1}{Part2}{Part3}");
TestStringsBy("mixed string concatenation ", () => string.Concat(vPart1, Part2, Part3));
TestStringsBy("mixed string addition ", () => vPart1 + Part2 + Part3);
private static void TestStringsBy(string info, Func<string> action)
var watch = Stopwatch.StartNew();
for (var i = 0; i < Repetitions; i++)
Console.WriteLine($"{info}: {watch.ElapsedMilliseconds}");
private static string GetPartBy(int index) => $"Part{index}";