Added a CMake option to execute GLM performance tests. Made quat and dualquat trivially constructible #263

This commit is contained in:
Christophe Riccio
2014-11-15 00:05:52 +01:00
parent b7b8b18f83
commit 0b8ca1a5b6
14 changed files with 70 additions and 36 deletions

View File

@@ -1018,7 +1018,6 @@ int main()
int Error(0);
Error += sign::test();
Error += sign::perf();
Error += test_floor();
Error += test_modf();
Error += test_floatBitsToInt();
@@ -1032,6 +1031,10 @@ int main()
Error += test_isnan();
Error += test_isinf();
# ifdef GLM_TEST_ENABLE_PERF
Error += sign::perf();
# endif
return Error;
}

View File

@@ -1321,11 +1321,8 @@ int main()
int Error = 0;
Error += ::bitCount::test();
Error += ::bitCount::perf();
Error += ::bitfieldReverse::test();
Error += ::bitfieldReverse::perf();
Error += ::findMSB::test();
Error += ::findMSB::perf();
Error += ::findLSB::test();
Error += ::umulExtended::test();
Error += ::imulExtended::test();
@@ -1334,5 +1331,11 @@ int main()
Error += ::bitfieldInsert::test();
Error += ::bitfieldExtract::test();
# ifdef GLM_TEST_ENABLE_PERF
Error += ::bitCount::perf();
Error += ::bitfieldReverse::perf();
Error += ::findMSB::perf();
# endif
return Error;
}

View File

@@ -240,11 +240,15 @@ int main()
Error += test_transpose();
Error += test_determinant();
Error += test_inverse();
# ifdef GLM_TEST_ENABLE_PERF
for(std::size_t i = 0; i < 1; ++i)
{
Error += test_inverse_perf<glm::vec3, glm::mat4>(i, "mat4");
Error += test_inverse_perf<glm::dvec3, glm::dmat4>(i, "dmat4");
}
# endif
return Error;
}

View File

@@ -425,8 +425,11 @@ int main()
std::size_t const Size(1000000);
Error += test_vec4_perf_AoS(Size);
Error += test_vec4_perf_SoA(Size);
# ifdef GLM_TEST_ENABLE_PERF
Error += test_vec4_perf_AoS(Size);
Error += test_vec4_perf_SoA(Size);
# endif
Error += test_vec4_ctor();
Error += test_vec4_size();
Error += test_vec4_operators();

View File

@@ -637,7 +637,9 @@ int main()
Error += ::bitfieldInterleave::test();
//Error += ::bitRevert::test();
Error += ::mask::perf();
# ifdef GLM_TEST_ENABLE_PERF
Error += ::mask::perf();
# endif
return Error;
}

View File

@@ -273,6 +273,20 @@ int test_quat_ctr()
{
int Error(0);
#if (GLM_LANG & GLM_LANG_CXX11_FLAG) || (GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)
// Error += std::is_trivially_default_constructible<glm::quat>::value ? 0 : 1;
// Error += std::is_trivially_default_constructible<glm::dquat>::value ? 0 : 1;
// Error += std::is_trivially_copy_assignable<glm::quat>::value ? 0 : 1;
// Error += std::is_trivially_copy_assignable<glm::dquat>::value ? 0 : 1;
Error += std::is_trivially_copyable<glm::quat>::value ? 0 : 1;
Error += std::is_trivially_copyable<glm::dquat>::value ? 0 : 1;
Error += std::has_trivial_copy_constructor<glm::quat>::value ? 0 : 1;
Error += std::has_trivial_copy_constructor<glm::dquat>::value ? 0 : 1;
Error += std::is_copy_constructible<glm::quat>::value ? 0 : 1;
Error += std::is_copy_constructible<glm::dquat>::value ? 0 : 1;
#endif
# if GLM_HAS_INITIALIZER_LISTS
{
glm::quat A{0, 1, 2, 3};

View File

@@ -299,7 +299,10 @@ int main()
Error += isPowerOfTwo::test();
Error += ceilPowerOfTwo::test();
Error += ceilPowerOfTwo::perf();
# ifdef GLM_TEST_ENABLE_PERF
Error += ceilPowerOfTwo::perf();
# endif
return Error;
}

View File

@@ -31,6 +31,7 @@ namespace fastCos
const std::clock_t time_default = timestamp3 - timestamp2;
std::printf("fastCos Time %d clocks\n", static_cast<unsigned int>(time_fast));
std::printf("cos Time %d clocks\n", static_cast<unsigned int>(time_default));
return time_fast < time_default ? 0 : 1;
}
}//namespace fastCos
@@ -53,6 +54,7 @@ namespace fastSin
const std::clock_t time_default = timestamp3 - timestamp2;
std::printf("fastSin Time %d clocks\n", static_cast<unsigned int>(time_fast));
std::printf("sin Time %d clocks\n", static_cast<unsigned int>(time_default));
return time_fast < time_default ? 0 : 1;
}
}//namespace fastSin
@@ -75,6 +77,7 @@ namespace fastTan
const std::clock_t time_default = timestamp3 - timestamp2;
std::printf("fastTan Time %d clocks\n", static_cast<unsigned int>(time_fast));
std::printf("tan Time %d clocks\n", static_cast<unsigned int>(time_default));
return time_fast < time_default ? 0 : 1;
}
}//namespace fastTan
@@ -97,6 +100,7 @@ namespace fastAcos
const std::clock_t time_default = timestamp3 - timestamp2;
std::printf("fastAcos Time %d clocks\n", static_cast<unsigned int>(time_fast));
std::printf("acos Time %d clocks\n", static_cast<unsigned int>(time_default));
return time_fast < time_default ? 0 : 1;
}
}//namespace fastAcos
@@ -119,6 +123,7 @@ namespace fastAsin
const std::clock_t time_default = timestamp3 - timestamp2;
std::printf("fastAsin Time %d clocks\n", static_cast<unsigned int>(time_fast));
std::printf("asin Time %d clocks\n", static_cast<unsigned int>(time_default));
return time_fast < time_default ? 0 : 1;
}
}//namespace fastAsin
@@ -141,6 +146,7 @@ namespace fastAtan
const std::clock_t time_default = timestamp3 - timestamp2;
std::printf("fastAtan Time %d clocks\n", static_cast<unsigned int>(time_fast));
std::printf("atan Time %d clocks\n", static_cast<unsigned int>(time_default));
return time_fast < time_default ? 0 : 1;
}
}//namespace fastAtan
@@ -149,12 +155,14 @@ int main()
{
int Error(0);
Error += ::fastCos::perf();
Error += ::fastSin::perf();
Error += ::fastTan::perf();
Error += ::fastAcos::perf();
Error += ::fastAsin::perf();
Error += ::fastAtan::perf();
# ifdef GLM_TEST_ENABLE_PERF
Error += ::fastCos::perf();
Error += ::fastSin::perf();
Error += ::fastTan::perf();
Error += ::fastAcos::perf();
Error += ::fastAsin::perf();
Error += ::fastAtan::perf();
# endif
return Error;
}