Я являюсь автором библиотеки DecInt (Десятичное целое), поэтому сделаю несколько комментариев.
Библиотека DecInt была специально разработана для работы с очень большими целыми числами, которые нужно было преобразовать в десятичный формат. Проблема с преобразованием в десятичный формат состоит в том, что большинство библиотек произвольной точности хранят значения в двоичном формате. Это самый быстрый и самый эффективный способ использования памяти, но преобразование из двоичного в десятичное обычно выполняется медленно. Преобразование двоичного числа в десятичное в Python использует алгоритм O (n ^ 2) и очень медленно работает.
DecInt использует большое десятичное число (обычно 10 ^ 250) и хранит очень большое число в блоках по 250 цифр. Преобразование очень большого числа в десятичный формат теперь выполняется в O (n).
Наивное, или начальное, умножение имеет время выполнения O (n ^ 2). Python использует умножение Карацубы со временем выполнения O (n ^ 1.585). DecInt использует комбинацию свертки Карацубы, Тоум-Кука и Нуссбаумера, чтобы получить время пробега O (n * ln (n)).
Даже несмотря на то, что DecInt имеет гораздо более высокие издержки, комбинация умножения O (n * ln (n)) и преобразования O (n) в конечном итоге будет быстрее, чем умножение O (n ^ 1.585) в Python и O (n ^ 2) преобразование.
Поскольку для большинства вычислений не требуется отображать каждый результат в десятичном формате, почти каждая библиотека с произвольной точностью использует двоичный код, поскольку это облегчает вычисления. DecInt предназначается для очень маленькой ниши. Для достаточно больших чисел DecInt будет быстрее для умножения и деления, чем родной Python. Но если вы стремитесь к чистой производительности, библиотека, подобная GMPY, будет самой быстрой.
Я рад, что вы нашли DecInt полезным.