我正在编写一个python脚本,它基本上使用很长的mpz整数(来自gmpy2库)和一些小列表。除了其他典型的“pythonic”代码优化之外,我还尝试通过使用set\u cache函数来减少脚本内部计算所需的时间(基本上,它们是来自gmpy2的“mul”、“add”、“sub”计算),但甚至将其设置为max,即set\u cache(100016384),我看不出使用和不使用它有什么区别,大整数的计时是一样的
如果有人对get\u cache的使用有经验,或者对哪种操作设置它比较好,我会很感激一些信息。我只知道gmpy官方页面是怎么说的(非常基本),在互联网上搜索这个方法并没有提供任何有趣的示例(至少我还没有找到它们)
我是gmpy2的维护者
由
set_cache()
和get_cache()
控制的缓存减少了创建新mpz
实例所需的时间。这种改进只适用于中等大小的整数。一旦开始处理大量数据,计算的运行时间就比对象创建时间长得多,缓存的影响可以忽略不计如果缓存算法没有限制缓存对象的大小,那么还可以消耗所有系统内存。这是alpha早期版本的一个问题
这些函数主要用于测试。减少或禁用缓存对于内存有限的系统可能很有用。一般来说,调整缓存大小没有什么好处
由于您没有提供任何代码或标识您的操作系统,因此我只能提供一些关于性能调优的一般性建议
*
、+
和-
运算符,而不是mul()
、add()
和sub()
。操作员的开销将更少李>long
和gmpy2的mpz
类型之间的转换次数李>gmpy2
。不幸的是,在Windows上这可能是一个挑战李>相关问题 更多 >
编程相关推荐