Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确配置gmpy2.set_缓存方法?_Python_Gmpy - Fatal编程技术网

Python 如何正确配置gmpy2.set_缓存方法?

Python 如何正确配置gmpy2.set_缓存方法?,python,gmpy,Python,Gmpy,我正在编写一个python脚本,它基本上使用gmpy2库中很长的mpz整数和一些小列表。除了其他典型的pythonic代码优化外,我还尝试减少脚本内部计算所需的时间,基本上,它们是来自gmpy2的mul,add,sub计算,通过使用set_cache函数,但甚至将其设置为max,即set_cache100016384,我看不出使用和不使用它有什么区别,大整数的计时是相同的 如果有人对get_cache的使用有经验,或者对哪种操作设置它更好,我将非常感谢提供一些信息。我只知道官方的gmpy页面对它

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


如果有人对get_cache的使用有经验,或者对哪种操作设置它更好,我将非常感谢提供一些信息。我只知道官方的gmpy页面对它的描述非常基本,在互联网上搜索该方法并没有提供任何有趣的示例,至少我还没有找到它们

我是gmpy2的维护者

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

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

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

由于您没有提供任何代码或识别您的操作系统,因此我只能提供一些性能调优的一般建议

使用*、+、和-运算符,而不是mul、add和sub运算符。这些运算符的开销较小。 尽量减少Python的long和gmpy2的mpz类型之间的转换次数。 为您的特定处理器编译gmpy2。不幸的是,在Windows上这可能是一个挑战。
非常感谢,现在我明白了。能直接从gmpy2团队得到一些反馈是非常棒的!太好了,你做得很好。