Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Links
- Script: http://pastebin.com/PJ2VfqN4
- Result: http://tinypic.com/r/303a4iv/7
- --
- # environment
- GNU Awk 3.1.8
- GNU grep 2.6.3
- $ cat /proc/cpuinfo
- processor : 0
- vendor_id : GenuineIntel
- cpu family : 6
- model : 23
- model name : Celeron(R) Dual-Core CPU T3000 @ 1.80GHz
- stepping : 10
- cpu MHz : 1795
- cache size : 1024 KB
- fpu : yes
- fpu_exception : yes
- cpuid level : 13
- wp : yes
- flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm xsave osxsave lahf_lm
- TLB size : 0 4K pages
- clflush size : 64
- cache_alignment : 64
- address sizes : 36 bits physical, 48 bits virtual
- power management:
- processor : 1
- vendor_id : GenuineIntel
- cpu family : 6
- model : 23
- model name : Celeron(R) Dual-Core CPU T3000 @ 1.80GHz
- stepping : 10
- cpu MHz : 1795
- cache size : 1024 KB
- fpu : yes
- fpu_exception : yes
- cpuid level : 13
- wp : yes
- flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm xsave osxsave lahf_lm
- TLB size : 0 4K pages
- clflush size : 64
- cache_alignment : 64
- address sizes : 36 bits physical, 48 bits virtual
- power management:
- --
- # make src.txt
- wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.1.tar.bz2
- tar xf linux-2.6.39.1.tar.bz2 --wildcards '*.c' -O >src.txt
- --
- ## merge time.txt with cmd.txt
- awk '/./ { print; next };
- { print; if (!("" p)) getline p < "time.txt";
- print p; while ((getline q < "time.txt") > 0) { if (p == q) break; print q }
- print }' <cmd.txt >ttime.txt
- ## for gnuplot
- awk '/^# result$/ { b = !b }; !b { next };
- $1 == "time" { t[0] = t[1]; if (/awk/) { sub(/^.*}; \//, "\"/"); sub(/ { .*$/, "\"") }
- else gsub(/^.*\$I | >\/.*$/, "\""); gsub(/\\/, "&&"); t[1] = $0; next };
- /^user/ { split($2, u, "m"); s[0] = s[1]; s[1] = 60 * u[1] + u[2]; next };
- /^for/ { if (t[0]) { p(c, s); print ORS } sub(/[^0-9]+/, ""); print "#", +$0 };
- /^[0-9]+$/ { if (/^0$/) p("\"Lines\"", t); else p(c, s); c = $0 };
- END { p(c, s) };
- function p(x, y) { print x, y[0], y[1] }' ttime.txt >gp.dat
- --
- # measure execution time
- for ((N=3000000,I=0; I<=100; I+=20)); do echo $I 1>&2; time head -n$N src.txt |awk 'BEGIN { L = '$I'; b = L + 1; n = L + 2; i = j = 0; s = 2; }; /regex/ { if (L && s == 1) print "--"; while (i != j) { print a[i++]; if (i == b) i = 0 } n = s = 0 }; n > L { a[j++] = $0; if (j == b) j = 0; if (i == j) { i++; if (i == b) i = 0; if (!s) s++ } next }; n++ <= L' >/dev/null; time head -n$N src.txt |grep -C $I 'regex' >/dev/null; done 2>>time.txt
- --
- # test script
- for ((N=3000000,I=0; I<=100; I+=50)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; /regex/ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I 'regex' >/dev/null
- done 2>time.txt
- --
- # result
- for ((N=3000000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; /test/ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I test >/dev/null
- done 2>time.txt
- 0
- real 0m8.646s
- user 0m8.673s
- sys 0m0.482s
- real 0m0.790s
- user 0m0.607s
- sys 0m0.450s
- 20
- real 0m9.295s
- user 0m9.266s
- sys 0m0.451s
- real 0m0.778s
- user 0m0.685s
- sys 0m0.373s
- 40
- real 0m9.533s
- user 0m9.873s
- sys 0m0.483s
- real 0m0.765s
- user 0m0.685s
- sys 0m0.388s
- 60
- real 0m9.635s
- user 0m9.717s
- sys 0m0.497s
- real 0m0.768s
- user 0m0.733s
- sys 0m0.419s
- 80
- real 0m9.696s
- user 0m9.780s
- sys 0m0.341s
- real 0m0.793s
- user 0m0.747s
- sys 0m0.435s
- 100
- real 0m9.766s
- user 0m9.765s
- sys 0m0.498s
- real 0m0.791s
- user 0m0.654s
- sys 0m0.544s
- for ((N=3000000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; /test.*test/ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I 'test.*test' >/dev/null
- done 2>>time.txt
- 0
- real 0m8.549s
- user 0m8.517s
- sys 0m0.482s
- real 0m0.851s
- user 0m0.794s
- sys 0m0.419s
- 20
- real 0m9.341s
- user 0m9.125s
- sys 0m0.357s
- real 0m0.925s
- user 0m0.920s
- sys 0m0.497s
- 40
- real 0m9.610s
- user 0m9.594s
- sys 0m0.497s
- real 0m0.843s
- user 0m0.810s
- sys 0m0.466s
- 60
- real 0m9.671s
- user 0m9.608s
- sys 0m0.357s
- real 0m0.858s
- user 0m0.669s
- sys 0m0.560s
- 80
- real 0m9.707s
- user 0m9.842s
- sys 0m0.451s
- real 0m0.856s
- user 0m0.779s
- sys 0m0.466s
- 100
- real 0m9.774s
- user 0m9.826s
- sys 0m0.561s
- real 0m0.846s
- user 0m0.763s
- sys 0m0.373s
- for ((N=30000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; /./ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I . >/dev/null
- done 2>>time.txt
- 0
- real 0m0.168s
- user 0m0.077s
- sys 0m0.046s
- real 0m50.856s
- user 0m50.169s
- sys 0m0.092s
- 20
- real 0m0.171s
- user 0m0.046s
- sys 0m0.061s
- real 0m50.712s
- user 0m49.998s
- sys 0m0.076s
- 40
- real 0m0.190s
- user 0m0.077s
- sys 0m0.046s
- real 0m50.489s
- user 0m50.216s
- sys 0m0.030s
- 60
- real 0m0.181s
- user 0m0.078s
- sys 0m0.046s
- real 0m51.034s
- user 0m50.294s
- sys 0m0.045s
- 80
- real 0m0.162s
- user 0m0.062s
- sys 0m0.031s
- real 0m50.549s
- user 0m50.076s
- sys 0m0.045s
- 100
- real 0m0.171s
- user 0m0.061s
- sys 0m0.062s
- real 0m50.535s
- user 0m50.091s
- sys 0m0.030s
- for ((N=30000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; /.*/ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I '.*' >/dev/null
- done 2>>time.txt
- 0
- real 0m0.153s
- user 0m0.077s
- sys 0m0.076s
- real 0m59.338s
- user 0m58.703s
- sys 0m0.045s
- 20
- real 0m0.164s
- user 0m0.077s
- sys 0m0.045s
- real 0m59.392s
- user 0m58.608s
- sys 0m0.030s
- 40
- real 0m0.165s
- user 0m0.077s
- sys 0m0.062s
- real 1m1.078s
- user 0m59.139s
- sys 0m0.030s
- 60
- real 0m0.174s
- user 0m0.078s
- sys 0m0.061s
- real 0m59.714s
- user 0m58.952s
- sys 0m0.076s
- 80
- real 0m0.164s
- user 0m0.046s
- sys 0m0.060s
- real 0m59.242s
- user 0m58.796s
- sys 0m0.092s
- 100
- real 0m0.164s
- user 0m0.046s
- sys 0m0.061s
- real 1m1.563s
- user 0m59.249s
- sys 0m0.107s
- for ((N=3000000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; / / { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I ' ' >/dev/null
- done 2>>time.txt
- 0
- real 0m9.239s
- user 0m7.206s
- sys 0m0.529s
- real 0m2.661s
- user 0m2.277s
- sys 0m0.606s
- 20
- real 0m6.663s
- user 0m5.786s
- sys 0m0.591s
- real 0m3.483s
- user 0m3.025s
- sys 0m0.451s
- 40
- real 0m6.886s
- user 0m6.051s
- sys 0m0.482s
- real 0m3.457s
- user 0m2.901s
- sys 0m0.546s
- 60
- real 0m6.546s
- user 0m5.864s
- sys 0m0.623s
- real 0m3.809s
- user 0m3.306s
- sys 0m0.264s
- 80
- real 0m6.744s
- user 0m6.006s
- sys 0m0.684s
- real 0m4.726s
- user 0m3.072s
- sys 0m0.560s
- 100
- real 0m6.587s
- user 0m5.911s
- sys 0m0.561s
- real 0m4.014s
- user 0m3.447s
- sys 0m0.357s
- for ((N=3000000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; / ./ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I ' .' >/dev/null
- done 2>>time.txt
- 0
- real 0m7.628s
- user 0m7.066s
- sys 0m0.561s
- real 0m9.883s
- user 0m8.938s
- sys 0m0.544s
- 20
- real 0m6.658s
- user 0m5.803s
- sys 0m0.684s
- real 0m10.163s
- user 0m9.531s
- sys 0m0.482s
- 40
- real 0m7.104s
- user 0m6.097s
- sys 0m0.514s
- real 0m10.673s
- user 0m9.858s
- sys 0m0.669s
- 60
- real 0m7.071s
- user 0m5.989s
- sys 0m0.466s
- real 0m10.524s
- user 0m9.702s
- sys 0m0.654s
- 80
- real 0m6.198s
- user 0m5.756s
- sys 0m0.559s
- real 0m10.446s
- user 0m9.936s
- sys 0m0.512s
- 100
- real 0m6.310s
- user 0m5.926s
- sys 0m0.466s
- real 0m10.653s
- user 0m9.858s
- sys 0m0.434s
- for ((N=3000000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; / ?[-+=*/~|^&] ?/ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I ' \?[-+=*/~|^&] \?' >/dev/null
- done 2>>time.txt
- 0
- real 0m7.522s
- user 0m7.581s
- sys 0m0.451s
- real 0m1.472s
- user 0m1.480s
- sys 0m0.435s
- 20
- real 0m5.794s
- user 0m5.879s
- sys 0m0.467s
- real 0m2.237s
- user 0m2.324s
- sys 0m0.357s
- 40
- real 0m5.886s
- user 0m5.896s
- sys 0m0.514s
- real 0m2.328s
- user 0m2.433s
- sys 0m0.420s
- 60
- real 0m5.898s
- user 0m5.833s
- sys 0m0.528s
- real 0m2.394s
- user 0m2.402s
- sys 0m0.483s
- 80
- real 0m6.228s
- user 0m6.037s
- sys 0m0.420s
- real 0m2.345s
- user 0m2.293s
- sys 0m0.623s
- 100
- real 0m5.733s
- user 0m5.740s
- sys 0m0.529s
- real 0m2.380s
- user 0m2.323s
- sys 0m0.590s
- for ((N=3000000,I=0; I<=100; I+=20)); do
- echo $I 1>&2
- time head -n$N src.txt |awk 'BEGIN { L = '$I'; (snip.) }; / [_A-Za-z][^ ]/ { (snip.) }; n++ <= L' >/dev/null
- time head -n$N src.txt |grep -C $I ' [_A-Za-z][^ ]' >/dev/null
- done 2>>time.txt
- 0
- real 0m20.183s
- user 0m19.390s
- sys 0m0.482s
- real 0m12.193s
- user 0m11.917s
- sys 0m0.560s
- 20
- real 0m18.113s
- user 0m17.331s
- sys 0m0.575s
- real 0m13.256s
- user 0m12.900s
- sys 0m0.513s
- 40
- real 0m18.065s
- user 0m17.362s
- sys 0m0.405s
- real 0m13.086s
- user 0m12.853s
- sys 0m0.389s
- 60
- real 0m17.816s
- user 0m17.315s
- sys 0m0.482s
- real 0m13.046s
- user 0m12.838s
- sys 0m0.669s
- 80
- real 0m17.557s
- user 0m17.283s
- sys 0m0.514s
- real 0m13.439s
- user 0m12.900s
- sys 0m0.419s
- 100
- real 0m17.735s
- user 0m17.378s
- sys 0m0.466s
- real 0m12.999s
- user 0m12.947s
- sys 0m0.466s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement