private void TestBigInt(string/*!*/ number, int @base, int repeat) { Stopwatch optimizedTime = new Stopwatch(); Stopwatch universalTime = new Stopwatch(); StringBuilder n = new StringBuilder(number); for (int j = 0; j < repeat; j++) { n.Append(number); } number = n.ToString(); for (int i = 0; i < number.Length - 1; i++) { string sub = number.Substring(i); string s = sub.Replace("_", "").ToUpper(); BigInteger b; Tokenizer.BignumParser p = new Tokenizer.BignumParser(); p.Position = 0; p.Buffer = s.ToCharArray(); optimizedTime.Start(); b = p.Parse(s.Length, @base); optimizedTime.Stop(); Assert(b.ToString((uint)@base) == s.TrimStart('0')); p.Position = 0; universalTime.Start(); b = p.ParseDefault(s.Length, (uint)@base); universalTime.Stop(); Assert(b.ToString((uint)@base) == s.TrimStart('0')); } if (repeat != 0) { Console.WriteLine("{0}: optimized = {1}ms, universal = {2}ms", @base, optimizedTime.ElapsedMilliseconds, universalTime.ElapsedMilliseconds); } }