测试了一下python的“不可变变量”的设计,有点慢呀

jessinio 2007-01-08 09:10:39
>>> num=0
>>> for x in range(0,10000000):
... num=num+x
...
>>>


要几秒!!哎!真搞不懂这种“不可变变量”的设计有什么好的。
...全文
285 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2007-01-09
  • 打赏
  • 举报
回复
你应该懂得怎样才能你真正想测试出的东西。

>>> for x in range(0,10000000):
... ...num=num+x

现在究竟是慢在哪里?

>>> for x in range(0,10000000):
... ...pass

现在你不计算加法,再试试。

>>> temp = range(0,10000000):

不遍历循环再试。

这样你才能比较出来到底是加法慢,还是for循环慢,还是range慢。

最后你再用while循环来试验一下,这样不需要range。

到底是哪里慢,我没有试,你自己试下吧。一般来说,简单的性能测试并不足以看得出到底是哪种“语言机制”导致的计算缓慢,上面的例子,其实不管结果如何,都证明不了是由于不可变对象才造成了运行缓慢。

真正使程序慢的原因往往不在于语言,而在于使用语言的人。

另外C#也是一门使用这种机制的语言,感兴趣的话可以再试试。不过关于不同语言间的整数、浮点数运算的性能比较,网上应该有不少评测文章,搜来看看或许更有效些。
jessinio 2007-01-09
  • 打赏
  • 举报
回复
我没有多少分了,我还有很多问题要问呀,真是对不起
ChumpKlutz 2007-01-09
  • 打赏
  • 举报
回复
嚴禁打擊零分貼
jessinio 2007-01-08
  • 打赏
  • 举报
回复
有快吗??我试了一下,反而更慢!!~!~
赖勇浩 2007-01-08
  • 打赏
  • 举报
回复
不知道什么叫不可变变量。。。

但我知道把range换成xrange会快很多。

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧