80 lines
No EOL
1.9 KiB
C#
80 lines
No EOL
1.9 KiB
C#
// See https://aka.ms/new-console-template for more information
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using BGC;
|
|
|
|
public static class Program
|
|
{
|
|
private static F32Versor[] AllocateVersors(int amount)
|
|
{
|
|
return new F32Versor[amount];
|
|
}
|
|
|
|
private static F32Versor[] MakeZeroVersors(int amount)
|
|
{
|
|
F32Versor[] versors = AllocateVersors(amount);
|
|
|
|
for (int i = 0; i < amount; i++)
|
|
{
|
|
versors[i].Reset();
|
|
}
|
|
|
|
return versors;
|
|
}
|
|
|
|
private static F32Versor[] MakeRandomVersors(int amount)
|
|
{
|
|
Random randomizer = new Random(Environment.TickCount);
|
|
|
|
F32Versor[] versors = AllocateVersors(amount);
|
|
|
|
for (int i = 0; i < amount; i++)
|
|
{
|
|
versors[i] = new F32Versor(
|
|
randomizer.NextSingle(),
|
|
randomizer.NextSingle(),
|
|
randomizer.NextSingle(),
|
|
randomizer.NextSingle()
|
|
);
|
|
}
|
|
|
|
return versors;
|
|
}
|
|
|
|
private static void PrintVersor(in F32Versor versor)
|
|
{
|
|
Console.WriteLine("({0}, {1}, {2}, {3})", versor.GetScalar(), versor.GetX1(), versor.GetX2(), versor.GetX3());
|
|
}
|
|
|
|
public static int Main()
|
|
{
|
|
int amount = 1000000;
|
|
|
|
F32Versor[] versors1 = MakeRandomVersors(amount);
|
|
F32Versor[] versors2 = MakeRandomVersors(amount);
|
|
F32Versor[] results = MakeZeroVersors(amount);
|
|
|
|
long start, end;
|
|
|
|
start = Environment.TickCount64;
|
|
|
|
for (int j = 0; j < 1000; j++)
|
|
{
|
|
for (int i = 0; i < amount; i++)
|
|
{
|
|
F32Versor.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;
|
|
}
|
|
} |