[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. use Encode;
  2. use File::Slurp;
  3. STDOUT->autoflush(1);
  4. my @lines = read_file("src.txt");
  5. my $head = shift @lines;
  6. my @mat = map { s/\r?\n$//; [split " ", $_]; } @lines;
  7. @mat = sort {
  8.     $a->[0] <=> $b->[0] ||
  9.     $b->[1] <=> $a->[1] ||
  10.     $a->[2] <=> $b->[2] ||
  11.     $b->[3] <=> $a->[3] ||
  12.     $a->[4] <=> $b->[4]
  13. } @mat;
  14. grep { printf "%s\n", join(",", @$_); } @mat;
复制代码
  1. 62,75,65,71,63
  2. 64,70,74,75,72
  3. 66,63,77,75,79
  4. 71,63,79,60,70
  5. 74,75,72,61,61
  6. 74,64,74,78,69
  7. 79,77,70,77,67
  8. 79,76,62,62,77
  9. 79,64,72,62,76
复制代码
不知道理解的对不对,升降升降升,分级排序。
1

评分人数

    • ivor: 学习了技术 + 1

TOP

加糖,类似5楼操作。
pack - "C"  An unsigned char (octet) value.
打包后的数据是字节对齐的。
  1. use File::Slurp;
  2. STDOUT->autoflush(1);
  3. my @lines = read_file("src.txt");
  4. my $head = shift @lines;
  5. grep {
  6.     my $it = 0;
  7.     printf "%s\n", join(",", map { $it++%2 ? 100-$_ : $_ } unpack("C*", $_));
  8. } sort map {
  9.         my $it = 0;
  10.         s/\r?\n$//;
  11.         pack("C*", map { $it++%2 ? 100-$_ : $_ } split " ", $_);
  12.     } @lines;
复制代码

TOP

本帖最后由 523066680 于 2019-6-2 07:50 编辑

PS+C Sharp 处理1W行具体时间是多少, 不懂PS 和 C Sharp

在网上找了一下 时间获取方法:
  1. $start = Get-Date
  2. # 中间代码
  3. $end = Get-Date
  4. Write-Host -ForegroundColor Red ('Total Runtime: ' + ($end - $start).TotalSeconds)
复制代码
Total Runtime: 0.1280073

perl pack 字节流方案  0.08 秒

去掉 unpack 改为按数组索引处理
  1. use File::Slurp;
  2. use Time::HiRes qw/time/;
  3. my $ta = time();
  4. my @lines = read_file("test.txt");
  5. my $head = shift @lines;
  6. my $buff = "";
  7. my @dupl = map {
  8.     my $it = 0;
  9.     s/\r?\n$//;
  10.     pack("C*", map { $it++%2 ? 100-$_ : $_ } split " ", $_);
  11. } @lines;
  12. my @idx = sort { $dupl[$a] cmp $dupl[$b] } (0..$#dupl);
  13. grep { $buff .= $lines[$_] ."\r\n" } @idx;
  14. write_file("pl_out.txt", {binmode=>"raw"}, $buff);
  15. printf "%.3f\n", time() - $ta;
复制代码
含文件输出 0.046s

2楼代码改文件输出 0.045s
1

评分人数

    • ivor: perl我不会,所以不知道时间,尴尬技术 + 1

TOP

本帖最后由 523066680 于 2019-6-2 07:55 编辑

回复 12# WHY

    不在意秒,之前也未报时间。而是ivor写的 "最" 有一种钦定的意思,后面还有未发帖的人呢。ivor已经回复我了。

TOP

返回列表