«

»

Окт 30 2011

Lock-free hash-table (с открытой адресацией)

Взялся сегодня адаптировать старую реализацию сабжа под новые требования кэша ресурсов движка (теперь требуются таблицы не только статического, но и динамического размера). Беглый осмотр кода сразу выявил наличие явно отвратительных мест в виде лишних вызовов interlocked-функций в некоторых сценариях. Посмотрев на сравнительно небольшой размер функций решил переписать всё на asm. Результат не может не радовать: код лаконичен, понятен и быстр (даже кол-во push/pop сведено к минимуму). Результаты тестирования показали превосходство новой реализации в 1.5 – 2 раза.

Еще раз убедился, что знание ассемблера обязательно каждому программисту. Даже если на нём и не пишешь, то без него нельзя разобраться в том, что нагенерировал компилятор (а там иногда такой ужас бывает, да и некоторые ошибки легче ловить в asm-е, нежели в коде высокого уровня).

 

Добавить комментарий