注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天地不仁,以万物为Googol!

天行有常,不以物喜,不以己悲……

 
 
 

日志

 
 

Python vs C  

2007-05-19 22:08:34|  分类: 积累 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这次的起因是这里:http://tempe.st/2007/05/erlang-ruby-and-php-battle-it-out/

很简单,作者想比较Erlang,Ruby,PHP,Javascript和C的运行速度,所以用求5000以内的pythagorean triplets个数为算法,对几种语言的实现做计时并比较。

可惜这篇文章里没有Python。

于是手痒(也可以理解为手欠!),自己写了个来比较:
import math

def pythag(n):
    i = 0
    temp = 0.0
    for c in xrange(2, n+1):
        for b in xrange(1, c):
            temp = math.sqrt(c*c - b*b)
            if int(temp) == temp:
                i += 1
    return i

print pythag(5000)

为了对比,把作者的c代码抄过来测了一下。结果在这里(由于windows里没有timeit命令,所以均在程序内部添加QueryPerformanceCounter做计时,根据Python文档,Python的time.clock在win32平台是使用QueryPerformanceCounter计时的):
1 C(Visual C++ 2005): 0.39s
2 Python(2.5.1): 14.83s

估计作者用的是MacBook Pro的本本,因此CPU的差异应该不大。姑且认为Python的效率比Ruby稍好一些吧,虽然差C还是很远。不知道Lua怎么样,哪位测一下?

脚本里做追求效率的密集计算还是不行口牙~~~~~~~

ps 算法本身还有很大的优化空间,目前是O(n^2),而且常数很大。直觉上至少能够降到O(nlogn)。

ps2 最后的答案是11362
  评论这张
 
阅读(647)| 评论(5)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017