public static void BenchmarkISqrt(int m) { List <long> program = new List <long>() { 3, 1, 109, 149, 21101, 0, 15, 0, 20101, 0, 1, 1, 1105, 1, 18, 204, 1, 99, 22101, 0, 1, 2, 22101, 0, 1, 1, 21101, 0, 43, 3, 22101, 0, 1, 4, 22101, 0, 2, 5, 109, 3, 1105, 1, 78, 109, -3, 22102, -1, 1, 1, 22201, 1, 4, 3, 22102, -1, 1, 1, 1208, 3, 0, 62, 2105, -1, 0, 1208, 3, 1, 69, 2105, -1, 0, 22101, 0, 4, 1, 1105, 1, 26, 1207, 1, 1, 83, 2105, -1, 0, 21101, 0, 102, 3, 22101, 0, 2, 4, 22101, 0, 1, 5, 109, 3, 1105, 1, 115, 109, -3, 22201, 1, 4, 1, 21101, 0, 2, 2, 1105, 1, 115, 2102, -1, 2, 140, 2101, 0, 2, 133, 22101, 0, 1, 2, 20001, 133, 140, 1, 1207, 2, -1, 136, 2105, -1, 0, 21201, 2, -1, 2, 22101, 1, 1, 1, 1105, 1, 131 }; IntCodeVM2 vm = new IntCodeVM2(program); vm.AddInput(m); DateTime start = DateTime.Now; vm.ExecuteProgram(); DateTime end = DateTime.Now; Console.WriteLine($"integer square root {m} is {vm.GetLastOutput()}, took {(end - start).TotalSeconds:F3}s"); }
public static void BenchmarkSumOfPrimes(int limit) { List <long> program = new List <long>() { 3, 100, 1007, 100, 2, 7, 1105, -1, 87, 1007, 100, 1, 14, 1105, -1, 27, 101, -2, 100, 100, 101, 1, 101, 101, 1105, 1, 9, 101, 105, 101, 105, 101, 2, 104, 104, 101, 1, 102, 102, 1, 102, 102, 103, 101, 1, 103, 103, 7, 102, 101, 52, 1106, -1, 87, 101, 105, 102, 59, 1005, -1, 65, 1, 103, 104, 104, 101, 105, 102, 83, 1, 103, 83, 83, 7, 83, 105, 78, 1106, -1, 35, 1101, 0, 1, -1, 1105, 1, 69, 4, 104, 99 }; IntCodeVM2 vm = new IntCodeVM2(program); vm.AddInput(limit); DateTime start = DateTime.Now; vm.ExecuteProgram(); DateTime end = DateTime.Now; Console.WriteLine($"Sum of primes below {limit} is {vm.GetLastOutput()}, took {(end - start).TotalSeconds:F3}s"); }
public static void BenchmarkAckermann(int m, int n) { List <long> program = new List <long>() { 109, 99, 21101, 0, 13, 0, 203, 1, 203, 2, 1105, 1, 16, 204, 1, 99, 1205, 1, 26, 22101, 1, 2, 1, 2105, 1, 0, 1205, 2, 40, 22101, -1, 1, 1, 21101, 0, 1, 2, 1105, 1, 16, 21101, 0, 57, 3, 22101, 0, 1, 4, 22101, -1, 2, 5, 109, 3, 1105, 1, 16, 109, -3, 22101, 0, 4, 2, 22101, -1, 1, 1, 1105, 1, 16 }; IntCodeVM2 vm = new IntCodeVM2(program); vm.AddInput(m); vm.AddInput(n); DateTime start = DateTime.Now; vm.ExecuteProgram(); DateTime end = DateTime.Now; Console.WriteLine($"Ackermann {m},{n} is {vm.GetLastOutput()}, took {(end - start).TotalSeconds:F3}s"); }