diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-02-23 13:43:38 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-02-23 13:43:38 +0000 |
commit | 5f8dbe9211454ded4d9cb1e4268ca441924ceb12 (patch) | |
tree | 83569fc2c349e3822106a9f993bd9c6a53f97f35 | |
parent | 8fa00e5e46d874767c5afab79060f42868f2ce06 (diff) | |
download | dupfiles-5f8dbe9211454ded4d9cb1e4268ca441924ceb12.tar.gz |
Add speed-test.
-rwxr-xr-x | speed-test | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/speed-test b/speed-test new file mode 100755 index 0000000..86dbaa4 --- /dev/null +++ b/speed-test @@ -0,0 +1,47 @@ +#!/usr/bin/python +# Copyright 2011 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +import cliapp +import subprocess +import sys +import time + + +class SpeedTest(cliapp.Application): + + def add_settings(self): + self.add_string_list_setting(['program', 'p'], + 'test using PROGRAM ' + '(can be given multiple times)') + + def process_args(self, args): + for program in self['program']: + argv = [program] + args + devnull = open('/dev/null', 'w') + started = time.time() + p = subprocess.Popen(argv, stdout=devnull, stderr=subprocess.PIPE) + out, err = p.communicate('') + ended = time.time() + if p.returncode: + sys.stderr.write('Program failed: %s\n%s' % (argv, err)) + sys.exit(1) + secs = ended - started + self.output.write('%.1f %s\n' % (secs, program)) + + +if __name__ == '__main__': + SpeedTest().run() |