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 版本的问题。
这些函数主要用于测试。减少或禁用缓存可能对内存有限的系统有用。通常,调整缓存大小没有太大好处。
由于您没有提供任何代码或确定您的操作系统,我只能提供一些通用的性能调整建议。
- 使用
*
、+
和 -
运算符代替 mul()
、add()
和 sub()
。运营商的开销将减少。
- 尽量减少 Python 的
long
和 gmpy2 的 mpz
类型之间的转换次数。
- 为您的特定处理器编译
gmpy2
。不幸的是,这在 Windows. 上可能具有挑战性
我正在编写一个 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 版本的问题。
这些函数主要用于测试。减少或禁用缓存可能对内存有限的系统有用。通常,调整缓存大小没有太大好处。
由于您没有提供任何代码或确定您的操作系统,我只能提供一些通用的性能调整建议。
- 使用
*
、+
和-
运算符代替mul()
、add()
和sub()
。运营商的开销将减少。 - 尽量减少 Python 的
long
和 gmpy2 的mpz
类型之间的转换次数。 - 为您的特定处理器编译
gmpy2
。不幸的是,这在 Windows. 上可能具有挑战性