История изменений
Исправление firkax, (текущая версия) :
Ясно, используют LEA вместо INC/DEC. Однако это лишний байт получается, не всегда хорошо.
Furthermore, an INC/DEC followed by ADC/SBB incur a pipeline stall of around 10 cycles
Мне кажется это core2-проблемы и костыль для их обхода. Т.к. такая просадка явно бы тормозила не только gmp но и ещё много чего, скорее всего это исправили в более новых процах как можно скорее. В атлоне такого точно не наблюдается. Кстати упомянутый Athlon64 это вроде бы самый первый (или почти) amd64 проц вообще, мой более новый.
Так что, подозреваю, на твоём проце мой вариант выше, с правильно подобранным количеством вычитаний на цикл, те самые 0.18с тоже должен дать.
Исправление firkax, :
Ясно, используют LEA вместо INC/DEC. Однако это лишние 2 байта получается, не всегда хорошо.
Furthermore, an INC/DEC followed by ADC/SBB incur a pipeline stall of around 10 cycles
Мне кажется это core2-проблемы и костыль для их обхода. Т.к. такая просадка явно бы тормозила не только gmp но и ещё много чего, скорее всего это исправили в более новых процах как можно скорее. В атлоне такого точно не наблюдается. Кстати упомянутый Athlon64 это вроде бы самый первый (или почти) amd64 проц вообще, мой более новый.
Так что, подозреваю, на твоём проце мой вариант выше, с правильно подобранным количеством вычитаний на цикл, те самые 0.18с тоже должен дать.
Исходная версия firkax, :
Ясно, используют LEA вместо INC/DEC. Однако это лишние 2 байта получается, не всегда хорошо.
Furthermore, an INC/DEC followed by ADC/SBB incur a pipeline stall of around 10 cycles
Мне кажется это core2-проблемы и костыль для их обхода. Т.к. такая просадка явно бы тормозила не только gmp но и ещё много чего, скорее всего это исправили в более новых процах как можно скорее. А атлоне такого точно не наблюдается. Кстати упомянутый Athlon64 это вроде бы самый первый (или почти) amd64 проц вообще, мой более новый.
Так что, подозреваю, на твоём проце мой вариант выше, с правильно подобранным количеством вычитаний на цикл, те самые 0.18с тоже должен дать.