[externals] use ankerl::unordered_dense over tsl

ankerl::unordered_dense is faster on average and has less memory usage
than tsl::robin_map. It is pretty significantly faster than std but
we'll keep that as is for now.

Obviously, this will need a lot of testing.

Signed-off-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
crueter committed 2026-01-15 14:07:08 -05:00
1 parent 14667c1756
commit 884b96c300
6 files changed
+10 -11

No files matched your search

+3 -4
View File
@@ -32,10 +32,6 @@
[submodule "External/Catch2"]
path = External/Catch2
url = https://github.com/catchorg/Catch2.git
[submodule "External/robin-map"]
shallow = true
path = External/robin-map
url = https://github.com/FEX-Emu/robin-map.git
[submodule "External/Vulkan-Headers"]
shallow = true
path = External/Vulkan-Headers
@@ -53,3 +49,6 @@
shallow = true
path = External/zydis
url = https://github.com/zyantific/zydis.git
[submodule "External/unordered_dense"]
path = External/unordered_dense
url = https://github.com/martinus/unordered_dense.git
+1 -1
View File
@@ -337,7 +337,7 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/Data/CMake/)
include(LinkerGC)
## Externals ##
include_directories(External/robin-map/include/)
include_directories(External/unordered_dense/include/)
include(CTest)
if (BUILD_TESTING OR ENABLE_VIXL_DISASSEMBLER OR ENABLE_VIXL_SIMULATOR)
Submodule External/robin-map deleted from d5683d9f18.
Vendored Submodule
+1
Submodule External/unordered_dense added at 3234af2c03.
+3 -3
View File
@@ -2,9 +2,9 @@
#pragma once
#include <FEXCore/fextl/allocator.h>
#include <tsl/robin_map.h>
#include <ankerl/unordered_dense.h>
namespace fextl {
template<class Key, class T, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>, class Allocator = fextl::FEXAlloc<std::pair<const Key, T>>>
using robin_map = tsl::robin_map<Key, T, Hash, KeyEqual, Allocator>;
template<class Key, class T, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>, class Allocator = fextl::FEXAlloc<std::pair<Key, T>>>
using robin_map = ankerl::unordered_dense::map<Key, T, Hash, KeyEqual, Allocator>;
}
+2 -2
View File
@@ -2,9 +2,9 @@
#pragma once
#include <FEXCore/fextl/allocator.h>
#include <tsl/robin_set.h>
#include <ankerl/unordered_dense.h>
namespace fextl {
template<class Key, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>, class Allocator = fextl::FEXAlloc<Key>>
using robin_set = tsl::robin_set<Key, Hash, KeyEqual, Allocator>;
using robin_set = ankerl::unordered_dense::set<Key, Hash, KeyEqual, Allocator>;
}