天马行空工作室

 找回密码
 加入天马
搜索
查看: 2663|回复: 0

字典生成算法的nodejs和python实现比较

[复制链接]
发表于 2015-4-11 23:12:53 | 显示全部楼层 |阅读模式
两者都用到了map,即数组映射,典型的数学函数思维。时间上python稍快,8核电脑分别为6-7秒,7-8秒。l(n)为字典字符长度,如l(4)为4位base里的字符遍历。
1、python源码
  1. import time
  2. base=list("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
  3. init=base
  4. i=1
  5. def rd(x):
  6.     return ",".join(list(map(lambda a:",".join(list(map(lambda b:a+""+b,base))),x))).split(",")

  7. def l(n):
  8.     global i,init
  9.     td=time.time()
  10.     while i<n:
  11.         i =i+1
  12.         init=rd(init)
  13.     i=0
  14.     print(time.time()-td)
  15.     return init
  16. d=time.time()
  17. fs=open("d:\\tmp\\6.txt","w")
  18. fs.write(" ".join(l(4)))
  19. fs.close()
  20. print (time.time()-d)
复制代码

2、nodejs源码:
  1. function rd(x){x=x||base;return x.map(function(a){ return base.map(function(b){ return a+b}).join(",")}).join(",").split(",")}
  2. base="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
  3. init=base;
  4. i=0
  5. function l(n){
  6. d=new Date().getTime()
  7. while (++i<n) {init=rd(init)}
  8. i=0
  9. console.log(new Date().getTime()-d)
  10. return init
  11. }

  12. fs=require("fs")
  13. d=new Date().getTime()
  14. fs.writeFile("d:\\tmp\\4.txt",l(4).join(" "),"utf-8",function(e,r){
  15. console.log(new Date().getTime()-d)})
复制代码




您需要登录后才可以回帖 登录 | 加入天马

本版积分规则

Archiver|手机版|小黑屋|天马行空工作室 ( 京ICP备12003429号  

GMT+8, 2018-12-18 21:20 , Processed in 0.317842 second(s), 24 queries .

Powered by Discuz! v8

© 2010-2014 字典生成算法的nodejs和python实现比较 - 编程讨论 天马行空工作室

快速回复 返回顶部 返回列表