Test() public static method

public static Test ( string testName, float>.Func function, int benchmarkIterations = 100000000 ) : void
testName string
function float>.Func
benchmarkIterations int
return void
示例#1
0
        public static void Test()
        {
            const int iterationCount = 10000000;

            //Helper.Test("Cross Scalar Old", TestTransformScalarOld, iterationCount);
            Helper.Test("Cross Scalar", TestTransformScalar, iterationCount);
        }
示例#2
0
        public static void Test()
        {
            TestBoxRayCorrectness();

            const int iterations = 1000000;

            Helper.Test("Box-Ray SIMD", TestBoxRaySIMD, iterations);
            Helper.Test("Box-Ray Scalar", TestBoxRayScalar, iterations);
        }
示例#3
0
        //public unsafe static void TestInversionCorrectness()
        //{
        //    Random random = new Random(5);
        //    for (int iterationIndex = 0; iterationIndex < 1000; ++iterationIndex)
        //    {
        //        bAffineTransform scalar;
        //        AffineTransform simd;
        //        var scalarPointer = (float*)&scalar;
        //        var simdPointer = (float*)&simd;

        //        //Create a guaranteed invertible transform.
        //        scalar.LinearTransform = bMatrix3x3.CreateFromAxisAngle(
        //            bVector3.Normalize(new bVector3(
        //                0.1f + (float)random.NextDouble(),
        //                0.1f + (float)random.NextDouble(),
        //                0.1f + (float)random.NextDouble())),
        //            (float)random.NextDouble());
        //        scalar.Translation = new bVector3((float)random.NextDouble() * 10, (float)random.NextDouble() * 10, (float)random.NextDouble() * 10);

        //        for (int i = 0; i < 12; ++i)
        //        {
        //            simdPointer[i] = scalarPointer[i];
        //        }


        //        bAffineTransform.Invert(ref scalar, out scalar);
        //        AffineTransform.Invert(ref simd, out simd);

        //        for (int i = 0; i < 12; ++i)
        //        {
        //            var errorSimd = Math.Abs(simdPointer[i] - scalarPointer[i]);
        //            Assert.IsTrue(errorSimd < 1e-5f);
        //        }
        //    }
        //}


        public unsafe static void Test()
        {
            Console.WriteLine("AFFINETRANSFORM RESULTS:");
            Console.WriteLine($"Size: {sizeof(AffineTransform)}");
            //TestMultiplyCorrectness();
            //TestInversionCorrectness();
            const int iterationCount = 10000000;

            Helper.Test("Invert SIMD", TestSIMDInvert, iterationCount);
            //Helper.Test("Invert Scalar", TestScalarInvert, iterationCount);

            Helper.Test("Multiply SIMD", TestSIMDMultiply, iterationCount);
            //Helper.Test("Multiply Scalar", TestScalarMultiply, iterationCount);

            Helper.Test("Transform SIMD", TestSIMDTransform, iterationCount);
            //Helper.Test("Transform Scalar", TestTransformScalar, iterationCount);
        }
示例#4
0
        public static void Test()
        {
            Console.WriteLine("MATRIX4x4 RESULTS:");
            //TestMultiplyCorrectness();
            const int iterationCount = 10000000;

            Helper.Test("Transpose SIMD", TestSIMDTranspose, iterationCount);
            Helper.Test("Transpose SIMDscalarpointer", TestSIMDScalarPointerTranspose, iterationCount);
            //Helper.Test("Transpose Scalar", TestScalarTranspose, iterationCount);
            Helper.Test("Transpose System", TestSystemTranspose, iterationCount);

            Helper.Test("Multiply SIMD", TestSIMDMultiply, iterationCount);
            //Helper.Test("Multiply Scalar", TestScalarMultiply, iterationCount);
            Helper.Test("Multiply System", TestSystemMultiply, iterationCount);

            Helper.Test("Transform SIMD", TestSIMDTransform, iterationCount);
            Helper.Test("TransformTranspose SIMD", TestSIMDTransformTranspose, iterationCount);
            //Helper.Test("Transform Scalar", TestTransformScalar, iterationCount);
            Helper.Test("Transform System", TestTransformSystem, iterationCount);
        }
示例#5
0
        //public unsafe static void TestInversionCorrectness()
        //{
        //    Random random = new Random(5);
        //    for (int iterationIndex = 0; iterationIndex < 1000; ++iterationIndex)
        //    {
        //        bMatrix3x3 scalar;
        //        Matrix3x3 simd;
        //        Matrix3x3 simdScalar;
        //        var scalarPointer = (float*)&scalar;
        //        var simdPointer = (float*)&simd;
        //        var simdScalarPointer = (float*)&simdScalar;

        //        //Create a guaranteed invertible matrix.
        //        scalar = bMatrix3x3.CreateFromAxisAngle(
        //            bVector3.Normalize(new bVector3(
        //                0.1f + (float)random.NextDouble(),
        //                0.1f + (float)random.NextDouble(),
        //                0.1f + (float)random.NextDouble())),
        //            (float)random.NextDouble());

        //        for (int i = 0; i < 9; ++i)
        //        {
        //            simdScalarPointer[i] = simdPointer[i] = scalarPointer[i];
        //        }


        //        bMatrix3x3.Invert(ref scalar, out scalar);
        //        Matrix3x3.Invert(ref simd, out simd);
        //        Matrix3x3.Invert(&simdScalar, &simdScalar);

        //        for (int i = 0; i < 9; ++i)
        //        {
        //            var errorSimd = Math.Abs(simdPointer[i] - scalarPointer[i]);
        //            var errorSimdScalar = Math.Abs(simdScalarPointer[i] - scalarPointer[i]);
        //            Assert.IsTrue(errorSimd < 1e-5f);
        //            Assert.IsTrue(errorSimdScalar < 1e-5f);
        //        }
        //    }
        //}


        public unsafe static void Test()
        {
            Console.WriteLine("MATRIX3x3 RESULTS:");
            Console.WriteLine($"Size: {sizeof(Matrix3x3)}");
            //TestMultiplyCorrectness();
            //TestInversionCorrectness();
            const int iterationCount = 10000000;

            Helper.Test("Invert SIMD", TestSIMDInvert, iterationCount);
            Helper.Test("Invert SIMDScalar", TestSIMDScalarInvert, iterationCount);
            //Helper.Test("Invert Scalar", TestScalarInvert, iterationCount);

            Helper.Test("Transpose SIMD", TestSIMDTranspose, iterationCount);
            Helper.Test("Transpose SIMDscalarpointer", TestSIMDScalarPointerTranspose, iterationCount);
            //Helper.Test("Transpose Scalar", TestScalarTranspose, iterationCount);

            Helper.Test("Multiply SIMD", TestSIMDMultiply, iterationCount);
            //Helper.Test("Multiply Scalar", TestScalarMultiply, iterationCount);

            Helper.Test("Transform SIMD", TestSIMDTransform, iterationCount);
            Helper.Test("TransformTranspose SIMD", TestSIMDTransformTranspose, iterationCount);
            //Helper.Test("Transform Scalar", TestTransformScalar, iterationCount);
        }