|
两者都用到了map,即数组映射,典型的数学函数思维。时间上python稍快,8核电脑分别为6-7秒,7-8秒。l(n)为字典字符长度,如l(4)为4位base里的字符遍历。
1、python源码
- import time
- base=list("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
- init=base
- i=1
- def rd(x):
- return ",".join(list(map(lambda a:",".join(list(map(lambda b:a+""+b,base))),x))).split(",")
- def l(n):
- global i,init
- td=time.time()
- while i<n:
- i =i+1
- init=rd(init)
- i=0
- print(time.time()-td)
- return init
- d=time.time()
- fs=open("d:\\tmp\\6.txt","w")
- fs.write(" ".join(l(4)))
- fs.close()
- print (time.time()-d)
复制代码
2、nodejs源码:
- function rd(x){x=x||base;return x.map(function(a){ return base.map(function(b){ return a+b}).join(",")}).join(",").split(",")}
- base="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
- init=base;
- i=0
- function l(n){
- d=new Date().getTime()
- while (++i<n) {init=rd(init)}
- i=0
- console.log(new Date().getTime()-d)
- return init
- }
- fs=require("fs")
- d=new Date().getTime()
- fs.writeFile("d:\\tmp\\4.txt",l(4).join(" "),"utf-8",function(e,r){
- console.log(new Date().getTime()-d)})
复制代码
|
|