?? runtests.pl
字號:
#!/usr/bin/perl## Accepts one argument - DBMS name (pgsql, ...) and initializes# global variable $TestDBMS with this name.## Where to run tests$DBNAME = 'perftest';# This describtion for all DBMS supported by test# DBMS_name => [FrontEnd, DestroyDB command, CreateDB command]%DBMS = ('pgsql' => ["psql -q -d $DBNAME", "destroydb $DBNAME", "createdb $DBNAME"]);# Tests to run: test' script, test' description, ...# Test' script is in form ## script_name[.ntm][ T]# # script_name is name of file in ./sqls# .ntm means that script will be used for some initialization# and should not be timed: runtests.pl opens /dev/null as STDERR# in this case and restore STDERR to result file after script done.# Script shouldn't notice either he is running for test or for# initialization purposes.# T means that all queries in this test (initialization ?) are to be# executed in SINGLE transaction. In this case global variable $XACTBLOCK # is not empty string. Otherwise, each query in test is to be executed# in own transaction ($XACTBLOCK is empty string). In accordance with # $XACTBLOCK, script is to do DBMS specific preparation before execution # of queries. (Look at example in sqls/inssimple for MySQL - it gives # an idea of what can be done for features unsupported by an DBMS.)#@perftests = (# It speed up things'connection.ntm', 'DB connection startup (no timing)',# Just connection startup time (echo "" | psql ... - for PgSQL)'connection', 'DB connection startup','crtsimple.ntm', 'Create SIMPLE table (no timing)',# 8192 inserts in single xaction'inssimple T', '8192 INSERTs INTO SIMPLE (1 xact)','drpsimple.ntm', 'Drop SIMPLE table (no timing)','crtsimple.ntm', 'Create SIMPLE table (no timing)',# 8192 inserts in 8192 xactions'inssimple', '8192 INSERTs INTO SIMPLE (8192 xacts)','vacuum.ntm', 'Vacuum (no timing)',# Fast (after table filled with data) index creation test'crtsimpleidx', 'Create INDEX on SIMPLE','drpsimple.ntm', 'Drop SIMPLE table (no timing)','crtsimple.ntm', 'Create SIMPLE table (no timing)','crtsimpleidx.ntm', 'Create INDEX on SIMPLE (no timing)',# 8192 inserts in single xaction into table with index'inssimple T', '8192 INSERTs INTO SIMPLE with INDEX (1 xact)',# 8192 SELECT * FROM simple WHERE justint = <random_key> in single xaction'slcsimple T', '8192 random INDEX scans on SIMPLE (1 xact)',# SELECT * FROM simple ORDER BY justint'orbsimple', 'ORDER BY SIMPLE',);## It seems that nothing below need to be changed#$TestDBMS = $ARGV[0];die "Unsupported DBMS $TestDBMS\n" if !exists $DBMS{$TestDBMS};$FrontEnd = $DBMS{$TestDBMS}[0];$DestroyDB = $DBMS{$TestDBMS}[1];$CreateDB = $DBMS{$TestDBMS}[2];print "(Re)create DataBase $DBNAME\n";`$DestroyDB`; # Destroy DB`$CreateDB`; # Create DB$ResFile = "Results.$TestDBMS";$TmpFile = "Tmp.$TestDBMS";open (SAVEOUT, ">&STDOUT");open (STDOUT, ">/dev/null") or die;open (SAVEERR, ">&STDERR");open (STDERR, ">$TmpFile") or die;select (STDERR); $| = 1;for ($i = 0; $i <= $#perftests; $i++){ $test = $perftests[$i]; ($test, $XACTBLOCK) = split (/ /, $test); $runtest = $test; if ( $test =~ /\.ntm/ ) { # # No timing for this queries # close (STDERR); # close $TmpFile open (STDERR, ">/dev/null") or die; $runtest =~ s/\.ntm//; } else { close (STDOUT); open(STDOUT, ">&SAVEOUT"); print STDOUT "\nRunning: $perftests[$i+1] ..."; close (STDOUT); open (STDOUT, ">/dev/null") or die; select (STDERR); $| = 1; printf "$perftests[$i+1]: "; } do "sqls/$runtest"; # Restore STDERR to $TmpFile if ( $test =~ /\.ntm/ ) { close (STDERR); open (STDERR, ">>$TmpFile") or die; } select (STDERR); $| = 1; $i++;}close (STDERR);open(STDERR, ">&SAVEERR");open (TMPF, "<$TmpFile") or die;open (RESF, ">$ResFile") or die;while (<TMPF>){ $str = $_; ($test, $rtime) = split (/:/, $str); ($tmp, $rtime, $rest) = split (/[ ]+/, $rtime); print RESF "$test: $rtime\n";}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -