Какая из приоритетных очередей быстрее?
Выбираю из:
- Наивная реализация на основе сортированного двусвязного списка
- Простая куча
- Фибоначчиева куча
- Pairing heap
- Тонкая куча
- Толстая куча
- Скошенная биномиальная куча
- Очередь Бродала-Окасаки
Пытался найти сравнительные графики в Интернете, однако сколько не мучил Google, ответа так и не добился.
Планируемый характер нагрузки:
- Количество элементов в очереди: до 2^16-1 (< 65536).
- Размер узлов 64 байта, из них 16 байт полезной нагрузки и остальное для полей узла кучи.
- Планируемый язык реализации C/C++ или Ассемблер. Архитектура x86-64.
- Необходимые операции: FindMin, Insert, ExtractMin, Merge.
- Желательные операции (но не критично): DeleteNode.
- Наиболее частая операция: FindMin. Реже: Insert и ExtractMin. Редко: DeleteNode. Очень редко: Merge.
По найденным асимптотическим оценкам, наиболее привлекательными выглядят Тонкая куча, Скошенная биномиальная куча и Очередь Бродала-Окасаки. Однако как насчёт производительности на практике?