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

How is gmpy2.set_cache method correctly configured?

我正在编写一个 python 脚本,该脚本基本上使用非常长的 mpz 整数(来自 gmpy2 库)和一些小列表。除了其他典型的 "pythonic" 代码优化外,我还尝试减少脚本内部计算所需的时间(基本上,它们是 "mul"、"add"、"sub" 计算来自gmpy2) 也通过使用 set_cache 函数,但即使将其设置为最大值,即 set_cache(1000,16384),我也看不出使用或不使用它有什么区别,时间是大整数相同。

如果有人对 get_cache 的用法有经验,或者设置它更适合哪种操作,我将不胜感激。我只知道 gmpy 官方页面是怎么说的(非常基本),在 Internet 上搜索该方法并没有提供任何有趣的示例(至少我还没有找到它们)

我是 gmpy2 的维护者。

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

如果缓存算法没有限制缓存对象的大小,你也可以消耗所有的系统内存。这是一个非常早的 alpha 版本的问题。

这些函数主要用于测试。减少或禁用缓存可能对内存有限的系统有用。通常,调整缓存大小没有太大好处。

由于您没有提供任何代码或确定您的操作系统,我只能提供一些通用的性能调整建议。

  1. 使用 *+- 运算符代替 mul()add()sub()。运营商的开销将减少。
  2. 尽量减少 Python 的 long 和 gmpy2 的 mpz 类型之间的转换次数。
  3. 为您的特定处理器编译 gmpy2。不幸的是,这在 Windows.
  4. 上可能具有挑战性