New hash_append robust container hash function framework:

* is_contiguous_hashable trait identifies optimizable types
* hash_append() function overloads for basic types:
  - scalars, floats
  - array, C array
  - pair, tuple
  - boost array and tuple (if configured)
* Provided Spooky hash wrapper for use with hash_append
* Use hash_append in hardened_hash and other places
* New Utility meta functions for working with variadics:
  - static_and
  - static_sum
* Added type_name utility function for diagnostics
* hash_metrics suite of functions to evalulate hash functions
* Test suites to measure hash function performance
* Various fixes
This commit is contained in:
Howard Hinnant
2014-03-30 23:17:29 -07:00
committed by Vinnie Falco
parent 6b467e7e59
commit 2ab7cfbf30
17 changed files with 2589 additions and 67 deletions

View File

@@ -66,6 +66,7 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</None>
<None Include="..\..\README.md" />
<None Include="..\..\SConstruct" />
<None Include="..\..\scripts\compile.sh" />
</ItemGroup>
<ItemGroup>
@@ -130,6 +131,9 @@
<ClInclude Include="..\..\beast\container\detail\aged_unordered_container.h" />
<ClInclude Include="..\..\beast\container\buffer_view.h" />
<ClInclude Include="..\..\beast\container\hardened_hash.h" />
<ClInclude Include="..\..\beast\container\hash_append.h" />
<ClInclude Include="..\..\beast\container\impl\spookyv2.h" />
<ClInclude Include="..\..\beast\container\tests\hash_metrics.h" />
<ClInclude Include="..\..\beast\Crypto.h" />
<ClInclude Include="..\..\beast\crypto\BinaryEncoding.h" />
<ClInclude Include="..\..\beast\crypto\impl\sha2\sha2.h" />
@@ -245,9 +249,11 @@
<ClInclude Include="..\..\beast\utility\Journal.h" />
<ClInclude Include="..\..\beast\utility\LeakChecked.h" />
<ClInclude Include="..\..\beast\utility\maybe_const.h" />
<ClInclude Include="..\..\beast\utility\meta.h" />
<ClInclude Include="..\..\beast\utility\noexcept.h" />
<ClInclude Include="..\..\beast\utility\PropertyStream.h" />
<ClInclude Include="..\..\beast\utility\StaticObject.h" />
<ClInclude Include="..\..\beast\utility\type_name.h" />
<ClInclude Include="..\..\beast\Version.h" />
<ClInclude Include="..\..\modules\beast_asio\async\AsyncObject.h" />
<ClInclude Include="..\..\modules\beast_asio\basics\FixedInputBuffer.h" />
@@ -430,6 +436,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\beast\container\Container.cpp" />
<ClCompile Include="..\..\beast\container\impl\spookyv2.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\beast\container\tests\aged_associative_container.test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
@@ -448,6 +460,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\beast\container\tests\hash_append.test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\beast\crypto\Crypto.cpp" />
<ClCompile Include="..\..\beast\crypto\impl\MurmurHash.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>

View File

@@ -70,6 +70,7 @@
<None Include="..\..\beast\asio\README.md">
<Filter>beast\asio</Filter>
</None>
<None Include="..\..\SConstruct" />
</ItemGroup>
<ItemGroup>
<Filter Include="beast_core">
@@ -303,6 +304,9 @@
<Filter Include="beast_asio\scripts">
<UniqueIdentifier>{c65af439-8c23-46c3-9b95-7da15651e5f6}</UniqueIdentifier>
</Filter>
<Filter Include="beast\container\impl">
<UniqueIdentifier>{18193ca8-bfb0-48af-b401-52ead0015ba5}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\modules\beast_core\beast_core.h">
@@ -1185,6 +1189,21 @@
<ClInclude Include="..\..\beast\container\hardened_hash.h">
<Filter>beast\container</Filter>
</ClInclude>
<ClInclude Include="..\..\beast\utility\meta.h">
<Filter>beast\utility</Filter>
</ClInclude>
<ClInclude Include="..\..\beast\container\impl\spookyv2.h">
<Filter>beast\container\impl</Filter>
</ClInclude>
<ClInclude Include="..\..\beast\container\hash_append.h">
<Filter>beast\container</Filter>
</ClInclude>
<ClInclude Include="..\..\beast\container\tests\hash_metrics.h">
<Filter>beast\container\tests</Filter>
</ClInclude>
<ClInclude Include="..\..\beast\utility\type_name.h">
<Filter>beast\utility</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\modules\beast_core\files\DirectoryIterator.cpp">
@@ -1643,6 +1662,12 @@
<ClCompile Include="..\..\beast\container\tests\hardened_hash.test.cpp">
<Filter>beast\container\tests</Filter>
</ClCompile>
<ClCompile Include="..\..\beast\container\tests\hash_append.test.cpp">
<Filter>beast\container\tests</Filter>
</ClCompile>
<ClCompile Include="..\..\beast\container\impl\spookyv2.cpp">
<Filter>beast\container\impl</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="..\..\TODO.txt">