mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-18 04:53:06 +01:00
Added HandleHashMap.
This commit is contained in:
76
tests/handle_bench.cpp
Normal file
76
tests/handle_bench.cpp
Normal file
@@ -0,0 +1,76 @@
|
||||
#include <bx/bx.h>
|
||||
#include <bx/timer.h>
|
||||
#include <bx/handlealloc.h>
|
||||
|
||||
#include <tinystl/allocator.h>
|
||||
#include <tinystl/unordered_map.h>
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
const uint32_t numElements = 4<<10;
|
||||
const uint32_t numIterations = 16;
|
||||
|
||||
//
|
||||
{
|
||||
int64_t elapsed = -bx::getHPCounter();
|
||||
|
||||
for (uint32_t ii = 0; ii < numIterations; ++ii)
|
||||
{
|
||||
typedef tinystl::unordered_map<uint64_t, uint16_t> TinyStlUnorderedMap;
|
||||
TinyStlUnorderedMap map;
|
||||
for (uint32_t jj = 0; jj < numElements; ++jj)
|
||||
{
|
||||
tinystl::pair<TinyStlUnorderedMap::iterator, bool> ok = map.insert(tinystl::make_pair(uint64_t(jj), uint16_t(jj) ) );
|
||||
assert(ok.second);
|
||||
}
|
||||
}
|
||||
|
||||
elapsed += bx::getHPCounter();
|
||||
printf(" TinyStl: %15f\n", double(elapsed) );
|
||||
}
|
||||
|
||||
///
|
||||
{
|
||||
int64_t elapsed = -bx::getHPCounter();
|
||||
|
||||
for (uint32_t ii = 0; ii < numIterations; ++ii)
|
||||
{
|
||||
typedef std::unordered_map<uint64_t, uint16_t> StdUnorderedMap;
|
||||
StdUnorderedMap map;
|
||||
for (uint32_t jj = 0; jj < numElements; ++jj)
|
||||
{
|
||||
std::pair<StdUnorderedMap::iterator, bool> ok = map.insert(std::make_pair(uint64_t(jj), uint16_t(jj) ) );
|
||||
assert(ok.second);
|
||||
}
|
||||
}
|
||||
|
||||
elapsed += bx::getHPCounter();
|
||||
printf(" STL: %15f\n", double(elapsed) );
|
||||
}
|
||||
|
||||
///
|
||||
{
|
||||
int64_t elapsed = -bx::getHPCounter();
|
||||
|
||||
for (uint32_t ii = 0; ii < numIterations; ++ii)
|
||||
{
|
||||
typedef bx::HandleHashMapT<numElements+numElements/2, uint64_t> HandleHashMap;
|
||||
HandleHashMap map;
|
||||
for (uint32_t jj = 0; jj < numElements; ++jj)
|
||||
{
|
||||
bool ok = map.insert(jj, uint16_t(jj) );
|
||||
assert(ok);
|
||||
}
|
||||
}
|
||||
|
||||
elapsed += bx::getHPCounter();
|
||||
printf("HandleHashMap: %15f\n", double(elapsed) );
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
Reference in New Issue
Block a user