makyo |
01-14-2008 01:30 PM |
Hi.
Here are some timings for many of the suggestions:
Code:
% ./do-time
Sample of input /tmp/one-mb.txt (1013897 characters):
1 Sun Jan 13 08:38:16 CST 2008
2
3 Egghead genial trident Ostrander snuggly. Dumpy smuggle ptict grirgadsy
4 Mallory. Herman Melville Airway fight ten Sproul spoken morass?
5 Swerve ostracism cap schema betwixt passenger Himalaya frivolity.
...
16562
16563 Ago grapevine eradicable bedim electret cyanate component? Moby Dick
16564 Nineveh stearate Amsterdam other pronounce octuwoft wharf kidnapped
16565 catatonia. Posterior emphatic weapon today Freeport krobs strulchuct
16566 Rodriguez.
Timing for perl (general (first run)):
(debug, pattern is :,:)
(debug, read 16566 lines.)
(debug, matched and changed at line 16501)
0.03user 0.00system 0:00.05elapsed 70%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1450minor)pagefaults 0swaps
Timing for perl (general (second run)):
(debug, pattern is :,:)
(debug, read 16566 lines.)
(debug, matched and changed at line 16501)
0.03user 0.00system 0:00.04elapsed 75%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1450minor)pagefaults 0swaps
Timing for perl (general, re-write):
0.02user 0.01system 0:00.05elapsed 67%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1224minor)pagefaults 0swaps
Timing for sed:
0.05user 0.00system 0:00.06elapsed 82%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+491minor)pagefaults 0swaps
Timing for awk:
0.06user 0.00system 0:00.08elapsed 86%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1181minor)pagefaults 0swaps
Timing for perl (one-liner):
0.02user 0.00system 0:00.03elapsed 67%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+668minor)pagefaults 0swaps
Timing for perl (one-liner slurp):
0.01user 0.00system 0:00.02elapsed 66%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1948minor)pagefaults 0swaps
Timing for perl (one-liner reverse slurp):
0.02user 0.00system 0:00.03elapsed 81%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1514minor)pagefaults 0swaps
Even with a 1 MB file, the timings are close enough such that the decision would be based on factors other than time.
If I were putting this into a Makefile, I'd probably choose osor's slurp reverse one-liner: it's short, fast, and doesn't assume the next-to-last line. I'd fiddle around with it to try to get it to re-write in-place (I tried it with "-i", but it didn't work for me -- cleared the file, wrote to STDOUT).
Best wishes ... cheers, makyo
|