Я не думаю, что алгоритм, допускающий высокоэффективную реализацию на одном универсальном компьютере, будет катастрофически плохим на другом, имеющем сравнимые характеристики.
Обращу внимание
vpb на выделенное жирным слово, это принципиальный момент. Пока пишете алгоритмы на С/С++ и прочих языках более-менее высокого уровня, всё хорошо. Но действительно высокопроизводительные решения используют специфические особенности аппаратуры (например SSE и AVX в случае x86) и вот тут поджидает засада, они очень плохо переносятся на другую аппаратуру. Потому часто ради производительности жертвуют совместимостью и пишут варианты под каждый вариант аппаратуры свой код (по крайней мере функций нижнего уровня). Так кстати поступают и в GMP.
Глянул я её кстати, очень мельком, не тесты общей производительности, а очень отдельный вопрос извлечения квадратного корня из длинного целого числа. Ну, там классический Ньютон, с длинными делениями, мрак. Надеялся хотя бы через обратный корень сделали, без делений, ан нет. Но возможно посчитали маловажной операцией (что странно!) и ради универсальности (корень любой целой степени) не стали тратить ресурсы на оптимизацию квадратного ...
vpbЧто ещё сказать, Кнут конечно могуч, и если хотя бы часть Ваших алгоритмов у него рассмотрена или Вы можете свести что-то своё к рассмотренному им, то это стоит сделать. Не обращая внимание на MIX, сравнивая лишь асимптотики (правда очень аккуратно и внимательно, лучше даже по каждым типам операций отдельно), всё же MIX достаточно похож на любой современный процессор чтобы не иметь существенных проблем при выполнении на реальном железе. Это первое.
Хотя существенные отличия всё же есть, самое известное из которых наверное наличие кэшей (если не ошибаюсь про MIX, давно не заглядывал), они сильно влияют на некоторые алгоритмы (где используется много памяти).
Второе, если в каком-то Вашем алгоритме понадобилась арифметика повышенной точности или вообще с любым отличием от стандартной IEEE (а их много может быть, этих отличий), то оцените даваемый алгоритмом выигрыш, пересилит ли он замедление всех элементарных операций с числами, последнее можно взять из тех же тестов скорости GMP (или грубо оценить как замедление на порядок для небольших чисел или околоквадратично по длине чисел для длинных). Потому что без аппаратной поддержки любая арифметика будет медленной.
Третье, имеет смысл разрабатывать две версии алгоритма, универсальную и специфичную с большим выигрышем скорости, подробно оговаривая какие именно операции требуются для последней. Может кто-то захочет потом написать их на ассемблере под конкретный процессор или вообще разработают FPGA или даже вдруг включат такие операции в следующие версии процессоров ...
Это не такая уж фантастика: AES, CRC, видеокодеки, битовые операции уже прошли этот путь. Главное чтобы выигрыш был на порядок (порядки) и алгоритм достаточно востребованным.
Четвёртое, не стоит повторять GMP и прочие, используйте их (в принципе любую, какая покажется проще и удобней). Сосредоточьтесь на своих алгоритмах, а не деталях реализации арифметики, если они не сильно мешают.
Пятое, уж извините за кучу общих слов без конкретных ссылок, но лично мне ближе ассемблер и вопросы оптимизации на языках высокого уровня интересны "для общего развития".
знать этот MIX критично, чтоб понимать главу про арифметику во втором томе, или можно обойтись ?
Я считаю вполне можно обойтись, смотреть лишь оценки времени и памяти для алгоритмов, ну и иметь очень общее представление какие типы операций сколько чего занимают (что обращение в память сильно дольше чем в регистр и лучше иметь мало локальных переменных, что деления сильно медленнее умножений, а те немного (да, теперь уже лишь немного) медленнее сложений/вычитаний, что почти любые сложные функции сильно медленнее делений, стоит помнить что операции с плавающей точкой при их аппаратной поддержке практически сравнялись по скорости с целочисленными операциями и некоторые алгоритмы потеряли актуальность, ну как-то так).
Полезно будет иметь под рукой и заглядывать какую-нибудь другую хорошую книгу по алгоритмам, с их описанием на другом понятном языке. Оценки (асимптотики скорости и памяти) алгоритмов останутся практически теми же, зато понятнее как работает и что можно улучшить или использовать.