首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内置函数与有限域手工构建函数的Python时间复杂度

问内置函数与有限域手工构建函数的Python时间复杂度
EN

Software Engineering用户
提问于 2013-06-30 17:25:29
回答 1查看 2K关注 0票数 0

通常,我想知道在Python中使用内置算术函数与滚动自己的算术函数的优缺点。

具体来说,我采用GF(2)有限域多项式的字符串格式,转换为基2值,执行算术,然后输出为多项式作为字符串格式。在乘法中有一个很小的例子:

滚动我自己的:

代码语言:javascript
复制
def multiply(a,b):
    bitsa = reversed("{0:b}".format(a))
    g = [(b<<i)*int(bit) for i,bit in enumerate(bitsa)]
    return reduce(lambda x,y: x+y,g)

相对于内置的:

代码语言:javascript
复制
def multiply(a,b):  # a,b are GF(2) polynomials in binary form ....
    return a*b  #returns product of 2 polynomials in gf2

目前,像乘法逆(例如20位指数)这样的运算需要很长时间才能在我的程序中运行,因为它使用了Python的所有内置运算,例如//地板除法和%模数等,而不是进行我自己的除法、余数等。我想知道手动构建这些运算在效率和性能上有多大的提高(如上面所示)。

我意识到这些收益取决于手工版本构建得有多好,这不是问题。我想找出“基本上”与内置运算相比有多大的优势。例如,如果乘法(如上面的例子)非常适合于基数10 (十进制)的算术,但必须跳过更多的圈,才能将基值转换为二进制数,然后在运算中又会有更多的圈(所以效率较低),这就是我想知道的。比如,我想知道是否有可能通过建立自己的方式来显著降低时间,也许这里的一些专业人士已经认识到了。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2013-06-30 22:00:32

与python中的内置操作相比,您自己的手动操作几乎不可能有任何进展,只是速度慢得可怜。如果您尝试实现手动操作,您将使您的程序要慢得多。

如果您想知道如何使代码运行得更快,请问这个问题。在http://codreview.stackexchange.com上发布完整的慢代码,并在那里获得关于可以改进的内容的反馈。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/203269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档