Если подумать ... Я не думаю, что у него будет много хитов производительности.
Поскольку bignums по своей природе будут иметь очень большое основание, скажем, основание 65536 или больше, для которого обычно максимально возможное значение для традиционного фикснума и целых чисел.
Я не знаю, насколько большим вы бы задали основание bignum, но если вы установите его достаточно большим, чтобы при использовании вместо фиксированных чисел и / или целых чисел оно никогда не превышало его первую цифру bignum таким образом, операция будет практически идентична обычным фиксам / int.
Это открывает возможность для оптимизаций, когда для bignum, который никогда не растет по сравнению с его первой bignum-цифрой, вы могли бы заменить их сверхбыстрой операцией с одной цифрой.
А затем переключитесь на n-разрядные алгоритмы, когда потребуется вторая двузначная цифра.
Это может быть реализовано с битовым флагом и проверочной операцией для всех арифметических операций, грубо говоря, вы можете использовать бит высшего порядка для обозначения bignum, если блок данных имеет бит самого высокого порядка, установленный в 0, тогда обрабатывать их, как если бы они были обычными фиксированными значениями / целочисленными значениями, но если для него задано значение 1, проанализировать блок как структуру bignum и использовать оттуда алгоритмы bignum.
Это должно избежать скачков производительности от простых переменных итератора цикла, которые, я думаю, являются первым возможным источником скачков производительности.
Это всего лишь мое грубое мышление, предложение, поскольку вы должны знать лучше меня: -)
p.s. извините, забыл, что технические термины bignum-digit и bignum-base были