using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.Diagnostics;
public class Test
{
public static void Main()
{
var sw = new Stopwatch();
string s;
const int n = 20;
sw.Restart();
s = "string";
for (int q=0; q<n; ++q) s = Regex.Replace(s, "(.)(?=.)", "$1 ");
sw.Stop();
Console.WriteLine("{0} {1}", s.GetHashCode(), sw.ElapsedMilliseconds);
GC.Collect();
sw.Restart();
s = "string";
for (int q=0; q<n; ++q) s = String.Join(" ", s.AsEnumerable());
sw.Stop();
Console.WriteLine("{0} {1}", s.GetHashCode(), sw.ElapsedMilliseconds);
GC.Collect();
sw.Restart();
s = "string";
for (int q=0; q<n; ++q) s = String.Join(" ", s.ToCharArray());
sw.Stop();
Console.WriteLine("{0} {1}", s.GetHashCode(), sw.ElapsedMilliseconds);
GC.Collect();
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAJdmFyIHN3ID0gbmV3IFN0b3B3YXRjaCgpOwogICAgCXN0cmluZyBzOwogICAgCQogICAgCWNvbnN0IGludCBuID0gMjA7CgoJCXN3LlJlc3RhcnQoKTsKICAgICAgICBzID0gInN0cmluZyI7CiAgICAgICAgZm9yIChpbnQgcT0wOyBxPG47ICsrcSkgcyA9IFJlZ2V4LlJlcGxhY2UocywgIiguKSg/PS4pIiwgIiQxICIpOwogICAgICAgIHN3LlN0b3AoKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9IHsxfSIsIHMuR2V0SGFzaENvZGUoKSwgc3cuRWxhcHNlZE1pbGxpc2Vjb25kcyk7CiAgICAgICAgR0MuQ29sbGVjdCgpOwoKCQlzdy5SZXN0YXJ0KCk7CiAgICAgICAgcyA9ICJzdHJpbmciOwogICAgICAgIGZvciAoaW50IHE9MDsgcTxuOyArK3EpIHMgPSBTdHJpbmcuSm9pbigiICIsIHMuQXNFbnVtZXJhYmxlKCkpOwogICAgICAgIHN3LlN0b3AoKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9IHsxfSIsIHMuR2V0SGFzaENvZGUoKSwgc3cuRWxhcHNlZE1pbGxpc2Vjb25kcyk7CiAgICAgICAgR0MuQ29sbGVjdCgpOwogICAgICAgIAoJCXN3LlJlc3RhcnQoKTsKICAgICAgICBzID0gInN0cmluZyI7CiAgICAgICAgZm9yIChpbnQgcT0wOyBxPG47ICsrcSkgcyA9IFN0cmluZy5Kb2luKCIgIiwgcy5Ub0NoYXJBcnJheSgpKTsKICAgICAgICBzdy5TdG9wKCk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoInswfSB7MX0iLCBzLkdldEhhc2hDb2RlKCksIHN3LkVsYXBzZWRNaWxsaXNlY29uZHMpOwogICAgICAgIEdDLkNvbGxlY3QoKTsKICAgIH0KfQ==