From 62fb2d5470fd2bb30885608e95822a4528b3afbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 28 Feb 2012 21:44:19 +0100 Subject: [PATCH] Using MurmurHash in MeshTools::Clean. SubdivideCleanBenchmark times are untouched with this change, but the hash should be better for MeshTools::CombineIndices, where the previous hash generated all zeros in most cases. --- src/MeshTools/Clean.h | 6 ++---- src/MeshTools/Test/CMakeLists.txt | 6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/MeshTools/Clean.h b/src/MeshTools/Clean.h index c006c9fe5..58039a255 100644 --- a/src/MeshTools/Clean.h +++ b/src/MeshTools/Clean.h @@ -22,6 +22,7 @@ #include #include +#include "Utility/MurmurHash2.h" #include "TypeTraits.h" namespace Magnum { namespace MeshTools { @@ -113,10 +114,7 @@ template class Clean { class IndexHash { public: inline size_t operator()(const Math::Vector& data) const { - size_t a = 0; - for(size_t i = 0; i != vertexSize; ++i) - a ^= data[i]; - return a; + return *reinterpret_cast(Corrade::Utility::MurmurHash2()(reinterpret_cast(&data), sizeof(data)).byteArray()); } }; diff --git a/src/MeshTools/Test/CMakeLists.txt b/src/MeshTools/Test/CMakeLists.txt index bd1fae141..230264038 100644 --- a/src/MeshTools/Test/CMakeLists.txt +++ b/src/MeshTools/Test/CMakeLists.txt @@ -1,6 +1,6 @@ -corrade_add_test(CleanTest CleanTest.h CleanTest.cpp) +corrade_add_test(CleanTest CleanTest.h CleanTest.cpp ${CORRADE_UTILITY_LIBRARY}) corrade_add_test(CompressIndicesTest CompressIndicesTest.h CompressIndicesTest.cpp ${CORRADE_UTILITY_LIBRARY} ${MAGNUM_LIBRARY}) corrade_add_test(InterleaveTest InterleaveTest.h InterleaveTest.cpp ${CORRADE_UTILITY_LIBRARY}) -corrade_add_test(SubdivideTest SubdivideTest.h SubdivideTest.cpp) -corrade_add_test(SubdivideCleanBenchmark SubdivideCleanBenchmark.h SubdivideCleanBenchmark.cpp ${MAGNUM_PRIMITIVES_LIBRARY}) +corrade_add_test(SubdivideTest SubdivideTest.h SubdivideTest.cpp ${CORRADE_UTILITY_LIBRARY}) +corrade_add_test(SubdivideCleanBenchmark SubdivideCleanBenchmark.h SubdivideCleanBenchmark.cpp ${CORRADE_UTILITY_LIBRARY} ${MAGNUM_PRIMITIVES_LIBRARY}) corrade_add_test(TipsifyTest TipsifyTest.h TipsifyTest.cpp ${MAGNUM_MESHTOOLS_LIBRARY})