using static System.Console;
using System.Diagnostics;
static int[] dataInt = new int[Limit];
static string[] dataString = new string[Limit];
public static void Main() {
for (int i = 0; i < Limit; i++) {
dataString[i] = i.ToString();
Time(ConcatenationString);
static void Time(Func<int> action) {
var sw = Stopwatch.StartNew();
WriteLine($"{result} - {sw.ElapsedTicks:000,000,000} - {action.Method.Name}");
GC.WaitForPendingFinalizers();
static int AdditionInt() {
for (int i = 0; i < Limit; i++) tmp += dataInt[i];
static int AdditionString() {
for (int i = 0; i < Limit; i++) tmp += dataString[i];
static int ConcatenationInt() => string.Concat(dataInt).Length;
static int ConcatenationString() => string.Concat(dataString).Length;
static int JunctionInt() => string.Join("", dataInt).Length;
static int JunctionString() => string.Join("", dataString).Length;
static int BuilderInt() {
var tmp = new StringBuilder();
for (int i = 0; i < Limit; i++) tmp.Append(dataInt[i]);
static int BuilderString() {
var tmp = new StringBuilder();
for (int i = 0; i < Limit; i++) tmp.Append(dataString[i]);