[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# xczxczxcz


    这种要求用解释型语言太伤了,根本没有效率可言
1

评分人数

    • xczxczxcz: 本论坛经常打不开,说的是。技术 + 1

TOP

回复 2# 523066680

I5  多线程 1000000个,要40多秒。感觉写法不太好。再研究一下。那个[random]等还用不好。

TOP

本帖最后由 523066680 于 2019-3-21 19:28 编辑
  1. use Time::HiRes qw/time/;
  2. STDOUT->autoflush(1);
  3. my $ta = time();
  4. my @upper = ('A'..'Z');
  5. my @eles = ('a'..'z', 'A'..'Z', '0'..'9');
  6. my $e_len = scalar(@eles);
  7. my $key;
  8. for my $i (1..1000000)
  9. {
  10.    $key = $upper[rand(26)] . join("", map { $eles[rand($e_len)] } (1..6) ) ;
  11.    printf "%s\n", $key;
  12. }
  13. printf STDERR "time usage %.2f", time()-$ta;
复制代码
genCode.pl >F:/temp/a.txt
输出到机械硬盘,100W个,4秒

join "", map {} () 改成末尾append形式,100W个,3秒
  1. for my $i (1..1000000)
  2. {
  3.    $key = $upper[rand(26)];
  4.    grep { $key .= $eles[rand($e_len)] } (1..6);
  5.    printf "%s\n", $key;
  6. }
复制代码
CPU 频率 4GHz
1

评分人数

    • xczxczxcz: 历害,我的写法还要改进,多线程1000000个要 ...技术 + 1

TOP

返回列表