Еще раз, я обнаружил, что набор нарушил предположения. Сама статья о приросте производительности 10 раз, изменяя проверенный оптимальный алгоритм для учета виртуальной памяти:
На современном многопроцессорном процессоре, работающем на некоторой частоте гигагерца, наихудшая потеря - почти 10 миллионов инструкции по ошибке на странице VM. если ты работают с вращающимся диском, число больше похоже на 100 миллионов инструкции.
Какая польза от алгоритма O (log2 (n)) если эти операции вызывают сбои страницы и медленные операции с дисками? Для большинства соответствующие наборы данных O (n) или даже O (n ^ 2), который избегает страницы сбои, вокруг него будут круги.
Есть ли еще такие алгоритмы? Должны ли мы пересмотреть все эти фундаментальные строительные блоки нашего образования? Что еще мне нужно, чтобы следить за тем, чтобы писать мои собственные?
Разъяснение:
Алгоритм, о котором идет речь, не быстрее, чем доказано-оптимальный, поскольку нотация Big-O ошибочна или бессмысленна. Это быстрее, потому что проверенный оптимальный алгоритм полагается на предположение, которое не соответствует действительности в современных аппаратных средствах/ОС, а именно, что все доступ к памяти равны и взаимозаменяемы.