132 lines
2.9 KiB
C#
132 lines
2.9 KiB
C#
using StgSharp.Math;
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.Runtime.InteropServices;
|
|
using System.Runtime.Intrinsics.X86;
|
|
|
|
namespace StgSharp
|
|
{
|
|
|
|
internal static class Program
|
|
{
|
|
|
|
internal unsafe static void Main(string[] args)
|
|
{
|
|
|
|
/**/
|
|
Matrix4x4 matrix = new Matrix4x4(
|
|
1,1,-1,2,
|
|
-1,-1,-4,1,
|
|
2,4,-6,1,
|
|
1,2,4,2
|
|
);
|
|
|
|
Console.WriteLine(matrix.Det());
|
|
|
|
/*
|
|
System.Numerics.Matrix4x4 m = new System.Numerics.Matrix4x4(
|
|
0,1,2,3,
|
|
0,0,1,2,
|
|
0,0,0,0,
|
|
1,2,5,6
|
|
);
|
|
|
|
int cycle = 1000;
|
|
int time = 10000;
|
|
|
|
|
|
|
|
for (int t = 0; t < cycle; t++)
|
|
{
|
|
Stopwatch sw = Stopwatch.StartNew();
|
|
sw.Start();
|
|
for (int i = 0; i < time; i++)
|
|
{
|
|
Matrix4x4 mat = matrix * matrix;
|
|
}
|
|
sw.Stop();
|
|
|
|
TimeSpan timeSpan = sw.Elapsed;
|
|
Console.WriteLine(timeSpan.TotalMilliseconds);
|
|
|
|
Stopwatch sw2 = new Stopwatch();
|
|
sw2.Start();
|
|
for (int i = 0; i < time; i++)
|
|
{
|
|
System.Numerics.Matrix4x4 mat = m * m;
|
|
}
|
|
sw2.Stop();
|
|
|
|
TimeSpan timeSpan1 = sw2.Elapsed;
|
|
Console.WriteLine(timeSpan1.TotalMilliseconds);
|
|
Console.WriteLine();
|
|
}
|
|
|
|
|
|
|
|
/**/
|
|
|
|
/*
|
|
System.Numerics.Matrix4x4 smt1 = new System.Numerics.Matrix4x4(
|
|
1,2,3,4,
|
|
5,6,7,8,
|
|
1,2,3,4,
|
|
5,6,7,8
|
|
);
|
|
|
|
Matrix4x4 gmt1 = new Matrix4x4(
|
|
1, 2, 3, 4,
|
|
5, 6, 7, 8,
|
|
1, 2, 3, 4,
|
|
5, 6, 7, 8
|
|
);
|
|
|
|
Stopwatch s = new Stopwatch();
|
|
|
|
double cycle = 1e6;
|
|
|
|
for (int t = 0; t < 1000; t++)
|
|
{
|
|
|
|
s.Reset();
|
|
s.Start();
|
|
|
|
for (int i = 0; i < cycle; i++)
|
|
{
|
|
System.Numerics.Matrix4x4 ret = smt1 * smt1;
|
|
}
|
|
s.Stop();
|
|
|
|
TimeSpan span = s.Elapsed;
|
|
Console.WriteLine(span.TotalMilliseconds);
|
|
|
|
s.Reset();
|
|
s.Start();
|
|
|
|
for (int i = 0; i < cycle; i++)
|
|
{
|
|
Matrix4x4 ret = VectorCalc.Multiple(gmt1, gmt1);
|
|
}
|
|
s.Stop();
|
|
|
|
TimeSpan span1 = s.Elapsed;
|
|
Console.WriteLine(span1.TotalMilliseconds);
|
|
|
|
Console.WriteLine(t);
|
|
Console.WriteLine();
|
|
|
|
|
|
}
|
|
|
|
/**/
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|