История изменений
Исправление KivApple, (текущая версия) :
Написал бенчмарк https://github.com/KivApple/CHashTable_benchmark. Алгоритм тот же как и для C++ и Rust - генерируем икосферу активно используя вектор и хештаблицу. Повторяем процесс 10 тысяч раз, замеряя общее время, а потом делим его на количество итераций. Между итерациями всё начинается с нуля (все контейнеры уничтожаются и создаются заново), однако в самом алгоритме применены все адекватные оптимизации (например, для всех контейнеров вызывается reserve вначале использования).
Версия для C++ использует flat_hash_map из библиотеки Abseil, версия для Rust AHashMap из одноимённой библиотеки, а версия для C использует мою реализацию.
Результаты:
[C++]
GCC: 67 us, 68 us
MSVC: 121 us, 118 us
Clang: 83 us, 87 us
[Rust]
62 us, 66 us
[C]
GCC: 47 us, 49 us
MSVC: 46 us, 46 us
Clang: 42 us, 40 us
Можно заметить, что моя реализация превосходит все остальные по производительности.
Исходная версия KivApple, :
Написал бенчмарк https://github.com/KivApple/CHashTable_benchmark. Алгоритм тот же как и для C++ и Rust - генерируем икосферу активно используя вектор и хештаблицу. Повторяем процесс 10 тысяч раз, замеряя общее время, а потом делим его на количество итераций. Между итерациями всё начинается с нуля (все контейнеры уничтожаются и создаются заново), однако в самом алгоритме применены все адекватные оптимизации (например, для всех контейнеров вызывается reserve вначале использования).
Версия для C++ использует flat_hash_map из библиотеки Abseil, версия для Rust AHashMap из одноимённой библиотеки, а версия для C использует мою реализацию.
Результаты:
[C++]
GCC: 67 us, 68 us
MSVC: 121 us, 118 us
Clang: 83 us, 87 us
[Rust]
62 us, 66 us
[C]
GCC: 47 us, 49 us
MSVC: 46 us, 46 us
Clang: 42 us, 40 us
Можно заметить, что моя реализация превосходит все остальные по производительности.