如何正确配置gmpy2.set_cache方法?

时间:2015-01-20 04:36:13

标签: python gmpy

我正在研究一个基本上使用非常长的mpz整数(来自gmpy2库)和一些小列表的python脚本。除了其他典型的" pythonic"代码优化,我试图减少脚本内部计算所需的时间(基本上,它们是" mul","添加"," sub"来自gmpy2)通过使用set_cache函数,但即使将其设置为max,即set_cache(1000,16384),我看不出使用或不使用它之间的任何区别,大整数的时序是相同的。 / p>

如果某人有使用get_cache的经验或者更好地设置它的操作,我会很感激一些信息。我只知道官方gmpy页面上说的内容(非常基本),并且在互联网上搜索该方法并没有提供任何有趣的样本(至少我还没有找到它们)

1 个答案:

答案 0 :(得分:0)

我是gmpy2的维护者。

set_cache()get_cache()控制的缓存减少了创建新mpz实例所需的时间。这种改进只适用于中等大小的整数。一旦开始使用非常大的数字,计算的运行时间比对象创建时间长得多,缓存的影响可以忽略不计。

如果缓存算法没有限制缓存对象的大小,您还可以使用所有系统内存。这是一个非常早期的alpha版本的问题。

这些功能主要用于测试。减少或禁用高速缓存对于具有有限存储器的系统可能是有用的。通常,调整缓存大小没有多大好处。

由于您未提供任何代码或已识别您的操作系统,因此我只能提供一些有关性能调整的通用建议。

  1. 使用*+-运算符代替mul()add()sub()。运营商的开销将会减少。
  2. 最大限度地减少Python long和gmpy2&#39 {s} mpz类型之间的转化次数。
  3. 为您的特定处理器编译gmpy2。不幸的是,这在Windows上可能具有挑战性。