93 lines
3.1 KiB
C#
93 lines
3.1 KiB
C#
#region --- License ---
|
|
/* Copyright (c) 2006, 2007 Stefanos Apostolopoulos
|
|
* See license.txt for license info
|
|
*/
|
|
#endregion
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Diagnostics;
|
|
using OpenTK.Math;
|
|
|
|
namespace Examples.Tests
|
|
{
|
|
[Example("Math speed test", ExampleCategory.Test, 2, false)]
|
|
public class MathSpeed
|
|
{
|
|
public static void Main()
|
|
{
|
|
Stopwatch watch = new Stopwatch();
|
|
|
|
Vector3 a = new Vector3(0.0f, 0.0f, 0.0f);
|
|
Vector3 b = new Vector3(1.0f, 1.0f, 1.0f);
|
|
Vector3 c = new Vector3(3.0f, 3.0f, 3.0f);
|
|
Vector3 d = new Vector3(4.0f, 4.0f, 4.0f);
|
|
Vector3 e = Vector3.Zero;
|
|
Vector3 res;
|
|
|
|
// Force the JIT to compile the functions.
|
|
Vector3.Add(a, b);
|
|
Vector3.Add(ref a, ref b, out res);
|
|
res = a + b;
|
|
res = Vector3.Zero;
|
|
/*
|
|
watch.Reset();
|
|
watch.Start();
|
|
for (int i = 100000000; --i != 0; )
|
|
;
|
|
watch.Stop();
|
|
Trace.WriteLine(String.Format("Noop\t\t\t\t\t\t{0}ns", (watch.Elapsed.TotalSeconds / 10.0).ToString()));
|
|
|
|
watch.Reset();
|
|
watch.Start();
|
|
for (int i = 100000000; --i != 0; )
|
|
res = Vector3.Add(res, a);
|
|
watch.Stop();
|
|
res += res; // To make sure the whole for-loop isn't optimized-out
|
|
Trace.WriteLine(String.Format("res = Vector3.Add(a, b)\t\t\t{0}ns", (watch.Elapsed.TotalSeconds / 10.0).ToString()));
|
|
res = Vector3.Zero;
|
|
|
|
watch.Reset();
|
|
watch.Start();
|
|
for (int i = 100000000; --i != 0; )
|
|
res = res + a;
|
|
watch.Stop();
|
|
res += res; // To make sure the whole for-loop isn't optimized-out
|
|
Trace.WriteLine(String.Format("res = a + b\t\t\t\t\t{0}ns", (watch.Elapsed.TotalSeconds / 10.0).ToString()));
|
|
|
|
watch.Reset();
|
|
watch.Start();
|
|
for (int i = 100000000; --i != 0; )
|
|
Vector3.Add(ref res, ref a, out res);
|
|
watch.Stop();
|
|
res += res; // To make sure the whole for-loop isn't optimized-out
|
|
Trace.WriteLine(String.Format("Vector3.Add(ref a, ref b, out res)\t{0}ns", (watch.Elapsed.TotalSeconds / 10.0).ToString()));
|
|
*/
|
|
/*
|
|
a = Vector3.UnitX;
|
|
b = Vector3.UnitY;
|
|
res = Vector3.Add(ref a, ref b);
|
|
Trace.WriteLine(res.ToString());
|
|
|
|
a = Vector3.UnitX;
|
|
b = Vector3.UnitY;
|
|
Vector3.Add(a, b, out res);
|
|
Trace.WriteLine(res.ToString());
|
|
|
|
Vector2Im q = new Vector2(0.0f, 1.0f);
|
|
Vector2Im p = new Vector2(2.0f, 3.0f);
|
|
Vector2Im s = Vector2.Add(p, q);
|
|
p = s + q;
|
|
*/
|
|
}
|
|
|
|
static Vector3 pos = new Vector3();
|
|
|
|
static Vector3 Pos
|
|
{
|
|
get { return pos; }
|
|
set { pos = value; }
|
|
}
|
|
}
|
|
}
|