免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: starwing83
打印 上一主题 下一主题

最近入了本SICP,发现自己对Lisp没以前那么反感了……好像括号看起来还不错…… [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
11 [报告]
发表于 2012-03-28 23:49 |显示全部楼层
回复 12# Lispor


    这个我貌似试过,的确很不错,恩,最近就用这个做SICP的练习好了~~

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
12 [报告]
发表于 2012-03-29 00:12 |显示全部楼层
回复 12# Lispor


    改了一堆东西在windows上编译过了,不过库全部残废了……主要是makefile没写好,有些还是编出来了的,不过安装就…………反正windows的支持肯定很够呛。chibi-genstubs生成的代码似乎是不兼容Windows的。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
13 [报告]
发表于 2012-03-29 00:13 |显示全部楼层
回复 23# OwnWaterloo


    哥哥,你自己仔细看看,人家是从900到1000,我是从100到1000,能一样么???


我的代码,100改900,速度绝对比python的快。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
14 [报告]
发表于 2012-03-29 00:14 |显示全部楼层
回复 22# 三月廿七


    所以买了SICP嘛……

不过还是要养家糊口对不对?

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
15 [报告]
发表于 2012-03-29 00:25 |显示全部楼层
回复 27# OwnWaterloo


    我承认偷懒了……加个
local max, reverse = math.max, string.reverse
看看会不会快一点?

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
16 [报告]
发表于 2012-03-29 00:33 |显示全部楼层
回复 29# OwnWaterloo


    不会吧!!是不是真的?信仰严重受挫有木有……不行我要自己试试看……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
17 [报告]
发表于 2012-03-29 00:52 |显示全部楼层
本帖最后由 starwing83 于 2012-03-29 00:57 编辑

回复 29# OwnWaterloo


    一次执行干扰太大,我分别在python和lua里面写了个100重循环计算。最终结果是lua比python慢0.1s,即使是luajit也是这样……为什么会这样……天崩地裂……

代码:


  1. local reverse = string.reverse
  2. local tostring = tostring
  3. for i = 1, 100 do
  4.     local res = 0
  5.     for m = 900,999 do
  6.         for n = 900,999 do
  7.             local x = m*n
  8.             local sx = tostring(x)
  9.             if sx == reverse(sx) and x > res then
  10.                 res = x
  11.             end
  12.         end
  13.     end
  14. end

复制代码


  1. for i in range(100):
  2.     max([x*y for x in range(900,1000) for y in range(900,1000) if str(x*y) == str(x*y)[::-1]])
复制代码
结果:
sw@WX-ACER ~
$ time python test.py ; time luajit test.lua

real    0m1.086s
user    0m0.016s
sys     0m0.031s

real    0m1.162s
user    0m0.015s
sys     0m0.000s

sw@WX-ACER ~
$ time python test.py ; time lua52 test.lua

real    0m1.053s
user    0m0.015s
sys     0m0.000s

real    0m1.295s
user    0m0.000s
sys     0m0.015s


即使是关了垃圾回收lua也没有python快……难道python专门优化过list comprehensive么……

python去掉了list comprehensive,写成了lua的形式,结果居然速度更快了,只有900ms的样子了……为神马………………

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
18 [报告]
发表于 2012-03-29 01:09 |显示全部楼层
回复 33# OwnWaterloo


    i5。原题也就一秒的样子。

我找到原因了,因为tostring用的是sprintf("%.14g"………………我哭!!

把tostring改成了("%d"):format(x),立刻时间是python的一半了……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
19 [报告]
发表于 2012-03-29 01:10 |显示全部楼层
本帖最后由 starwing83 于 2012-03-29 01:12 编辑

回复 34# OwnWaterloo


    是900……好,我改到100看看,不过100的话应该用不着放大了

改成100不放大,lua比python快0.1s左右:


  1. $ time python test.py ; time lua52 test.lua

  2. real    0m0.941s
  3. user    0m0.000s
  4. sys     0m0.015s

  5. real    0m0.820s
  6. user    0m0.015s
  7. sys     0m0.000s
复制代码
luajit快了一半:

  1. sw@WX-ACER ~
  2. $ time python test.py ; time luajit test.lua

  3. real    0m0.868s
  4. user    0m0.015s
  5. sys     0m0.000s

  6. real    0m0.511s
  7. user    0m0.015s
  8. sys     0m0.000s
复制代码

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
20 [报告]
发表于 2012-03-29 01:21 |显示全部楼层
本帖最后由 starwing83 于 2012-03-29 01:22 编辑

回复 37# OwnWaterloo


    我这边是5.2和jit,你用的是啥版本?5.2试试?

我的python是2.7.2,的确51比python慢一点点,但是52比python快一点点,jit是python一半时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP