Python操作符和函数调用的性能比较

标签:Python, 性能

详细的测试我就不列出了,这2种方法的性能与是否为内置类型有关。

对于内置类型,操作符的性能高于函数调用,甚至快1个数量级。例如+快于__add__,in快于__contains__,[]快于__getitem__和__getslice__,**快于math.pow和math.sqrt,``快于repr和__repr__,就连字符串的[]切片操作再==比较,也快于startswith和endswith。
当然,后2种方法是不被推荐的(甚至Python 3都去掉了``),但是性能差距摆在那,写起来也方便,读上去也易懂,所以我肯定是选择操作符。
不过考虑到``和''在某些字体下较难区分,还得看情况抉择下。
此外还有一点例外:将整数转成字符串,``快于'%s' %快于str快于'%d' %。(看来%d几乎没有存在的意义。)

而对于自定义类型,操作符实际上是隐式调用成员函数,所以速度不如后者;但``仍快于repr,因为后者也要调用__repr__。
不过为了书写的方便,我自然还是倾向于使用操作符。

而在C++中,操作符重载就是一个成员函数,并且编译后是完全没有区别的,这点Python只能通过JIT来做到了。

0条评论 你不来一发么↓

    想说点什么呢?