我正在研究一个基本上使用非常长的mpz整数(来自gmpy2库)和一些小列表的python脚本。除了其他典型的" pythonic"代码优化,我试图减少脚本内部计算所需的时间(基本上,它们是" mul","添加"," sub"来自gmpy2)通过使用set_cache函数,但即使将其设置为max,即set_cache(1000,16384),我看不出使用或不使用它之间的任何区别,大整数的时序是相同的。 / p>
如果某人有使用get_cache的经验或者更好地设置它的操作,我会很感激一些信息。我只知道官方gmpy页面上说的内容(非常基本),并且在互联网上搜索该方法并没有提供任何有趣的样本(至少我还没有找到它们)
答案 0 :(得分:0)
我是gmpy2的维护者。
由set_cache()
和get_cache()
控制的缓存减少了创建新mpz
实例所需的时间。这种改进只适用于中等大小的整数。一旦开始使用非常大的数字,计算的运行时间比对象创建时间长得多,缓存的影响可以忽略不计。
如果缓存算法没有限制缓存对象的大小,您还可以使用所有系统内存。这是一个非常早期的alpha版本的问题。
这些功能主要用于测试。减少或禁用高速缓存对于具有有限存储器的系统可能是有用的。通常,调整缓存大小没有多大好处。
由于您未提供任何代码或已识别您的操作系统,因此我只能提供一些有关性能调整的通用建议。
*
,+
和-
运算符代替mul()
,add()
和sub()
。运营商的开销将会减少。long
和gmpy2&#39 {s} mpz
类型之间的转化次数。gmpy2
。不幸的是,这在Windows上可能具有挑战性。