using System;
using System.Diagnostics;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
string[] vals = Enumerable.Range(0, 1000000).Select(n => n.ToString()).ToArray();
string[] res = new string[1000000];
var watch = Stopwatch.StartNew();
for(int i = 0; i < vals.Length; i++) {
res[i] = string.Format("({0})", vals[i]);
}
Console.WriteLine ("it took {0} ms for string.Format", watch.ElapsedMilliseconds);
watch = Stopwatch.StartNew();
for (int i = 0; i < vals.Length; i++)
{
res[i] = "(" + vals[i] + ")";
}
Console.WriteLine ("it took {0} ms for " +"\'(\' + vals[i] +\')\';", watch.ElapsedMilliseconds);
watch = Stopwatch.StartNew();
char[] data = new char[100];
data[0] = '(';
for(int i = 0; i < vals.Length; i++)
{
var str = vals[i];
var len = str.Length;
str.CopyTo(0, data, 1, len);
data[len + 1] = ')';
res[i] = new String(data, 0, len + 2);
}
Console.WriteLine ("it took {0} ms for fancy", watch.ElapsedMilliseconds);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CnVzaW5nIFN5c3RlbS5MaW5xOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJICAgICAgICBzdHJpbmdbXSB2YWxzID0gRW51bWVyYWJsZS5SYW5nZSgwLCAxMDAwMDAwKS5TZWxlY3QobiA9PiBuLlRvU3RyaW5nKCkpLlRvQXJyYXkoKTsKICAgICAgICAgICAgc3RyaW5nW10gcmVzID0gbmV3IHN0cmluZ1sxMDAwMDAwXTsKCSAgICAJCQkJCQoJICAgIAl2YXIgd2F0Y2ggPSBTdG9wd2F0Y2guU3RhcnROZXcoKTsKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHZhbHMuTGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHJlc1tpXSA9IHN0cmluZy5Gb3JtYXQoIih7MH0pIiwgdmFsc1tpXSk7CiAgICAgICAgICAgIH0KCSAgICAJCgkgICAgCUNvbnNvbGUuV3JpdGVMaW5lICgiaXQgdG9vayB7MH0gbXMgZm9yIHN0cmluZy5Gb3JtYXQiLCB3YXRjaC5FbGFwc2VkTWlsbGlzZWNvbmRzKTsKCSAgICAJCgkgICAgCXdhdGNoID0gU3RvcHdhdGNoLlN0YXJ0TmV3KCk7CQoJICAgIAlmb3IgKGludCBpID0gMDsgaSA8IHZhbHMuTGVuZ3RoOyBpKyspCgkgICAgCXsKCSAgICAJCXJlc1tpXSA9ICIoIiArIHZhbHNbaV0gICsgIikiOwoJICAgIAl9CgkgICAgCUNvbnNvbGUuV3JpdGVMaW5lICgiaXQgdG9vayB7MH0gbXMgZm9yICIgKyJcJyhcJyArIHZhbHNbaV0gICtcJylcJzsiLCB3YXRjaC5FbGFwc2VkTWlsbGlzZWNvbmRzKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHdhdGNoID0gU3RvcHdhdGNoLlN0YXJ0TmV3KCk7CiAgICAgICAgICAgIGNoYXJbXSBkYXRhID0gbmV3IGNoYXJbMTAwXTsKICAgICAgICAgICAgZGF0YVswXSA9ICcoJzsKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHZhbHMuTGVuZ3RoOyBpKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBzdHIgPSB2YWxzW2ldOwogICAgICAgICAgICAgICAgdmFyIGxlbiA9IHN0ci5MZW5ndGg7CiAgICAgICAgICAgICAgICBzdHIuQ29weVRvKDAsIGRhdGEsIDEsIGxlbik7CiAgICAgICAgICAgICAgICBkYXRhW2xlbiArIDFdID0gJyknOwogICAgICAgICAgICAgICAgcmVzW2ldID0gbmV3IFN0cmluZyhkYXRhLCAwLCBsZW4gKyAyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUgKCJpdCB0b29rIHswfSBtcyBmb3IgZmFuY3kiLCB3YXRjaC5FbGFwc2VkTWlsbGlzZWNvbmRzKTsKCX0KfQ==