2015-01-20 2 views
-2

Я работаю над скриптом python, который в основном использует очень длинные mpz-целые числа (из библиотеки gmpy2) и некоторые небольшие списки. Помимо других типичных «pythonic» оптимизаций кода, я попытался сократить время, необходимое для вычислений внутри скрипта (в основном это «mul», «add», «sub» вычисления из gmpy2), используя функцию set_cache как ну, но даже устанавливая его на max, то есть set_cache (1000,16384), я не вижу никакой разницы между использованием или не использованием его, тайминги одинаковы для больших целых чисел.Как правильно настроить gmpy2.set_cache?

Если у кого-то есть опыт использования get_cache или для каких операций лучше его установить, я бы хотел получить некоторую информацию. Я просто знаю, что об этом говорит официальная страница gmpy (очень простая), а googling об этом методе в Интернете не содержит интересных примеров (по крайней мере, я их еще не нашел)

ответ

0

Я являюсь разработчиком gmpy2 ,

Кэширование, которое контролируется set_cache() и get_cache(), сокращает время, необходимое для создания нового экземпляра mpz. Улучшение только измеримо для целых чисел умеренного размера. Когда вы начинаете работать с очень большими числами, время выполнения вычислений намного дольше, чем время создания объекта, эффекты кэширования незначительны.

Если алгоритм кэширования не ограничивает размер кешированных объектов, вы также можете использовать всю системную память. Это была проблема с очень ранним релизом альфы.

Функции в основном используются для тестирования. Уменьшение или отключение кеша может быть полезно для системы с ограниченной памятью. Как правило, при настройке размера кеша мало пользы.

Поскольку вы не предоставили никакого кода или не указали свою операционную систему, я могу предоставить только некоторые общие рекомендации по настройке производительности.

  1. Используйте *, + и - операторы вместо mul(), add() и sub(). У операторов будет меньше накладных расходов.
  2. Минимизируйте количество преобразований между типами long и Python mpz.
  3. Компиляция gmpy2 для вашего конкретного процессора. К сожалению, это может быть сложной задачей в Windows.
+0

спасибо, сейчас я понимаю. Замечательно иметь обратную связь непосредственно от команды gmpy2! Вы делаете отличную работу. – iadvd

 Смежные вопросы

  • Нет связанных вопросов^_^