| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #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;
- }
|