diff options
Diffstat (limited to 'qt/time')
-rw-r--r-- | qt/time/README.time | 17 | ||||
-rwxr-xr-x | qt/time/assim | 42 | ||||
-rwxr-xr-x | qt/time/cswap | 37 | ||||
-rwxr-xr-x | qt/time/go | 43 | ||||
-rwxr-xr-x | qt/time/init | 42 | ||||
-rwxr-xr-x | qt/time/prim | 41 | ||||
-rwxr-xr-x | qt/time/raw | 58 |
7 files changed, 280 insertions, 0 deletions
diff --git a/qt/time/README.time b/qt/time/README.time new file mode 100644 index 000000000..4bb190e18 --- /dev/null +++ b/qt/time/README.time @@ -0,0 +1,17 @@ +The program `raw', when run in `..' runs the program `run' produced +from `meas.c'. It produces a raw output file (see `../tmp/*.raw'). +`raw' will die with an error if run in the current directory. Note +that some versions of `time' produce output in an unexpected format; +edit them by hand. + +`prim', `init', `cswap' and `go' produce formatted table entries used +in the documentation (in `../doc'). For example, from `..', + + foreach i (tmp/*.raw) + time/prim $i + end + +See notes in the QuickThreads document about the applicability of +these microbenchmark measurements -- in general, you can expect all +QuickThreads operations to be a bit slower when used in a real +application. diff --git a/qt/time/assim b/qt/time/assim new file mode 100755 index 000000000..6c4c52183 --- /dev/null +++ b/qt/time/assim @@ -0,0 +1,42 @@ +#! /bin/awk -f + +BEGIN { + nmach = 0; + + init_test = "1"; + abort_test = "6"; + blocki_test = "7"; + block_test = "8"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + init = times[m "_" init_test]; + printf ("init %s | %f\n", m, init); + + init_abort_blocki = times[m "_" abort_test]; + abort_blocki = init_abort_blocki - init; + blocki = times[m "_" blocki_test]; + abort = abort_blocki - blocki; + blockf = times[m "_" block_test]; + printf ("swap %s | %f | %f | %f\n", m, abort, blocki, blockf); + } +} diff --git a/qt/time/cswap b/qt/time/cswap new file mode 100755 index 000000000..0ec811bcd --- /dev/null +++ b/qt/time/cswap @@ -0,0 +1,37 @@ +#! /bin/awk -f + +BEGIN { + purpose = "report time used by int only and int+fp cswaps"; + + nmach = 0; + + test_int = "7"; + test_fp = "8"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + integer = times[m "_" test_int]; + fp = times[m "_" test_fp]; + printf ("%s|%3.1f|%3.1f\n", m, integer, fp); + } +} diff --git a/qt/time/go b/qt/time/go new file mode 100755 index 000000000..489d53882 --- /dev/null +++ b/qt/time/go @@ -0,0 +1,43 @@ +#! /bin/awk -f + +BEGIN { + purpose = "report times used for init/start/stop"; + + nmach = 0; + + test_single = "6"; + test_v0 = "10"; + test_v2 = "11"; + test_v4 = "12"; + test_v8 = "13"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + single = times[m "_" test_single]; + v0 = times[m "_" test_v0]; + v2 = times[m "_" test_v2]; + v4 = times[m "_" test_v4]; + v8 = times[m "_" test_v8]; + printf ("%s|%3.1f|%3.1f|%3.1f|%3.1f|%3.1f\n", m, single, v0, v2, v4, v8); + } +} diff --git a/qt/time/init b/qt/time/init new file mode 100755 index 000000000..8bcbf3428 --- /dev/null +++ b/qt/time/init @@ -0,0 +1,42 @@ +#! /bin/awk -f + +BEGIN { + purpose = "Report time used to initialize a thread." + nmach = 0; + + test_single = "1"; + test_v0 = "14"; + test_v2 = "15"; + test_v4 = "16"; + test_v8 = "17"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + us_per_op = time / iter * 1000000 + times[mach "_" test] = us_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + single = times[m "_" test_single]; + v0 = times[m "_" test_v0]; + v2 = times[m "_" test_v2]; + v4 = times[m "_" test_v4]; + v8 = times[m "_" test_v8]; + printf ("%s|%3.1f|%3.1f|%3.1f|%3.1f|%3.1f\n", m, single, v0, v2, v4, v8); + } +} diff --git a/qt/time/prim b/qt/time/prim new file mode 100755 index 000000000..22b323f6f --- /dev/null +++ b/qt/time/prim @@ -0,0 +1,41 @@ +#! /bin/awk -f + +BEGIN { + purpose = "report times for microbenchmarks" + + nmach = 0; + + test_callind = "18"; + test_callimm = "18"; + test_addreg = "20"; + test_loadreg = "21"; +} + +{ + mach = $1 + test = $2 + iter = $3 + time = $6 + $8 + + if (machi[mach] == 0) { + machn[nmach] = mach; + machi[mach] = 1; + ++nmach; + } + + ns_per_op = time / iter * 1000000 + times[mach "_" test] = ns_per_op; +} + + +END { + for (i=0; i<nmach; ++i) { + m = machn[i]; + + ind = times[m "_" test_callind]; + imm = times[m "_" test_callimm]; + add = times[m "_" test_addreg]; + load = times[m "_" test_loadreg]; + printf ("%s|%1.3f|%1.3f|%1.3f|%1.3f\n", m, ind, imm, add, load); + } +} diff --git a/qt/time/raw b/qt/time/raw new file mode 100755 index 000000000..96ae10ad1 --- /dev/null +++ b/qt/time/raw @@ -0,0 +1,58 @@ +#! /bin/csh + +rm -f timed + +set init=1 +set runone=6 +set blockint=7 +set blockfloat=8 +set vainit0=14 +set vainit2=15 +set vainit4=16 +set vainit8=17 +set vastart0=10 +set vastart2=11 +set vastart4=12 +set vastart8=13 +set bench_regcall=18 +set bench_immcall=19 +set bench_add=20 +set bench_load=21 + +source configuration + +echo -n $config_machine $init $config_init +/bin/time run $init $config_init +echo -n $config_machine $runone $config_runone +/bin/time run $runone $config_runone +echo -n $config_machine $blockint $config_blockint +/bin/time run $blockint $config_blockint +echo -n $config_machine $blockfloat $config_blockfloat +/bin/time run $blockfloat $config_blockfloat + +echo -n $config_machine $vainit0 $config_vainit0 +/bin/time run $vainit0 $config_vainit0 +echo -n $config_machine $vainit2 $config_vainit2 +/bin/time run $vainit2 $config_vainit2 +echo -n $config_machine $vainit4 $config_vainit4 +/bin/time run $vainit4 $config_vainit4 +echo -n $config_machine $vainit8 $config_vainit8 +/bin/time run $vainit8 $config_vainit8 + +echo -n $config_machine $vastart0 $config_vastart0 +/bin/time run $vastart0 $config_vastart0 +echo -n $config_machine $vastart2 $config_vastart2 +/bin/time run $vastart2 $config_vastart2 +echo -n $config_machine $vastart4 $config_vastart4 +/bin/time run $vastart4 $config_vastart4 +echo -n $config_machine $vastart8 $config_vastart8 +/bin/time run $vastart8 $config_vastart8 + +echo -n $config_machine $bench_regcall $config_bcall_reg +/bin/time run $bench_regcall $config_bcall_reg +echo -n $config_machine $bench_immcall $config_bcall_imm +/bin/time run $bench_immcall $config_bcall_imm +echo -n $config_machine $bench_add $config_b_add +/bin/time run $bench_add $config_b_add +echo -n $config_machine $bench_load $config_b_load +/bin/time run $bench_load $config_b_load |