From 54c497d1880fef22e08a6e73ca30c480250fb867 Mon Sep 17 00:00:00 2001 From: Jamie Liu Date: Mon, 1 Jun 2015 20:33:15 -0700 Subject: [PATCH] Improve benchmark scripts - Split cpsm benchmarking off from input data so that input data can be reused for other matchers. - Add --iterations and --threads to bench_cpsm.py. --- python/bench.py | 18 ++++-------------- python/bench_cpsm.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 14 deletions(-) mode change 100755 => 100644 python/bench.py create mode 100755 python/bench_cpsm.py diff --git a/python/bench.py b/python/bench.py old mode 100755 new mode 100644 index 8a44391..997743f --- a/python/bench.py +++ b/python/bench.py @@ -17,8 +17,6 @@ from __future__ import print_function -import time - import cpsm import linuxclock @@ -48755,18 +48753,10 @@ "firmware/mts_cdma.fw.ihex", ] -ITERATIONS = 30 +QUERIES = ("", "s", "si", "sig", "sign", "signa", "signal") LIMIT = 10 -if __name__ == "__main__": - for query in ("", "s", "si", "sig", "sign", "signa", "signal"): - times = [] - for _ in xrange(ITERATIONS): - start = linuxclock.monotonic() - results = cpsm.ctrlp_match(ITEMS, query, limit=LIMIT, ispath=True) - finish = linuxclock.monotonic() - times.append(finish - start) - print("Query '%s': avg time %fs, min time %fs, results: [%s]" % ( - query, sum(times) / len(times), min(times), - ", ".join("'%s'" % r for r in results))) +MATCH_MODE = "full-line" + +DEFAULT_ITERATIONS = 30 diff --git a/python/bench_cpsm.py b/python/bench_cpsm.py new file mode 100755 index 0000000..a9a857b --- /dev/null +++ b/python/bench_cpsm.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +# cpsm - fuzzy path matcher +# Copyright (C) 2015 Jamie Liu +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function + +import argparse + +import bench +import cpsm +import linuxclock + +if __name__ == "__main__": + argp = argparse.ArgumentParser() + argp.add_argument("-n", "--iterations", nargs="?", type=int, + default=bench.DEFAULT_ITERATIONS, + help="number of iterations per query") + argp.add_argument("-t", "--threads", nargs="?", type=int, default=0, + help="number of matcher threads") + args = argp.parse_args() + for query in bench.QUERIES: + times = [] + for _ in xrange(args.iterations): + start = linuxclock.monotonic() + results = cpsm.ctrlp_match(bench.ITEMS, query, limit=bench.LIMIT, + ispath=True, nr_threads=args.threads) + finish = linuxclock.monotonic() + times.append(finish - start) + print("Query '%s': avg time %fs, results: [%s]" % ( + query, sum(times) / len(times), + ", ".join("'%s'" % r for r in results)))