Сравнение производительности хэшмапов и бинарных деревьев в Go

Наткнулся я на вот такой замечательный пакет для GO github.com/pmylund/go-cacheПокрутив его мне стало интересно, а что будет если заменить map[string]Item на бинарное дерево, немного повозившись я это сделал и очень обрадовался результатами бенчмарка. Это и стало моей ошибкой.Бенчмарк показывал среднее ускорение работы кэша почти в 2 раза, вот не сказка ли? На радостях я тут же оформил пулл реквест (https://github.com/pmylund/go-cache/pull/13), получил ответ pmylund о том, что это выглядит интересно и он подумает.А я тем временем использовал модифицированный пакет в своем проекте, но закрались в меня сомнения, а действительно ли это так, действительно ли есть прирост скорости в два раза? И я решил провести небольшое исследование (читай: синтетический тест)И вот что показали результаты: Удаление записейimageПолучение записей imageЗаполнение imageЦикл по структурам imageОтсюда, можно судить, при больших объемах бинарное дерево проигрывает по производительности хэшмапу во всем, кроме итераций.Сами тесты здесь, вместе с графикамиgithub.com/t0pep0/mb_benchmarkP.S. прошу прощения за несколько сумбурное повествование

P.P. S бенчмарк у go-cache показал такие скорости из-за малых объемов данных

© Habrahabr.ru