// See https://aka.ms/new-console-template for more information using System; using System.ComponentModel; using System.Diagnostics; using Geometry; public static class Program { private static SPVersor[] AllocateVersors(int amount) { return new SPVersor[amount]; } private static SPVersor[] MakeZeroVersors(int amount) { SPVersor[] versors = AllocateVersors(amount); for (int i = 0; i < amount; i++) { versors[i] = SPVersor.IDLE; } return versors; } private static SPVersor[] MakeRandomVersors(int amount) { Random randomizer = new Random(Environment.TickCount); SPVersor[] versors = AllocateVersors(amount); for (int i = 0; i < amount; i++) { versors[i] = new SPVersor( randomizer.NextSingle(), randomizer.NextSingle(), randomizer.NextSingle(), randomizer.NextSingle() ); } return versors; } private static void PrintVersor(in SPVersor versor) { Console.WriteLine("({0}, {1}, {2}, {3}) / {4:E}", versor.GetScalar(), versor.GetX1(), versor.GetX2(), versor.GetX3(), versor.GetCorrector() - 1.0f); } public static int Main() { int amount = 1000000; SPVersor[] versors1 = MakeRandomVersors(amount); SPVersor[] versors2 = MakeRandomVersors(amount); SPVersor[] results = MakeZeroVersors(amount); long start, end; start = Environment.TickCount64; for (int j = 0; j < 1000; j++) { for (int i = 0; i < amount; i++) { SPVersor.Combine(versors1[i], versors2[i], out results[i]); } } end = Environment.TickCount64; Console.WriteLine("Time: {0}", end - start); PrintVersor(versors1[10]); PrintVersor(versors2[10]); PrintVersor(results[10]); return 0; } }