diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2017-09-04 02:23:18 +0700 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2017-12-31 12:20:59 +0100 |
commit | ba46856bb403a507977e4c699c90714c962463f9 (patch) | |
tree | 4cbca7d1f0fa584630eae9c6c9f975ac44c1f0eb /include | |
parent | 349219c14875705b8142d599f6af153d22a9a00e (diff) |
benchmark: move benchmark impl to a private header
There is no need to expose the implementation details of both
BENCHMARK_START and BENCHMARK_STOP macros via public header.
This change moves them to a separate private header 'bench.h'.
Diffstat (limited to 'include')
-rw-r--r-- | include/Makefile.am | 1 | ||||
-rw-r--r-- | include/osmocom/gapk/bench.h | 50 | ||||
-rw-r--r-- | include/osmocom/gapk/benchmark.h | 28 |
3 files changed, 54 insertions, 25 deletions
diff --git a/include/Makefile.am b/include/Makefile.am index f64faeb..81419f7 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,5 +1,6 @@ noinst_HEADERS = \ osmocom/gapk/utils.h \ + osmocom/gapk/bench.h \ $(NULL) nobase_include_HEADERS = \ diff --git a/include/osmocom/gapk/bench.h b/include/osmocom/gapk/bench.h new file mode 100644 index 0000000..02c28db --- /dev/null +++ b/include/osmocom/gapk/bench.h @@ -0,0 +1,50 @@ +/* + * This file is part of gapk (GSM Audio Pocket Knife). + * + * (C) 2014 Harald Welte <laforge@gnumonks.org> + * + * gapk 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. + * + * gapk 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 gapk. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#pragma once + +#include <osmocom/gapk/get_cycles.h> +#include <osmocom/gapk/benchmark.h> +#include <osmocom/gapk/codecs.h> + +static inline void benchmark_store(enum osmo_gapk_codec_type codec, + int encode, unsigned long cycles) +{ + struct osmo_gapk_bench_cycles *bc = &osmo_gapk_bench_codec[codec]; + + if (encode) { + bc->enc_used = (bc->enc_used + 1) % OSMO_GAPK_CYCLES_NUM_AVG; + bc->enc[bc->enc_used] = cycles; + } else { + bc->dec_used = (bc->dec_used + 1) % OSMO_GAPK_CYCLES_NUM_AVG; + bc->dec[bc->dec_used] = cycles; + } +} + +#define BENCHMARK_START \ + do { \ + cycles_t _cycles_start, _cycles_stop; \ + _cycles_start = get_cycles() + +#define BENCHMARK_STOP(codec, enc) \ + _cycles_stop = get_cycles(); \ + benchmark_store(codec, enc, \ + _cycles_stop - _cycles_start); \ + } while (0) diff --git a/include/osmocom/gapk/benchmark.h b/include/osmocom/gapk/benchmark.h index 6cfc074..b64a3b5 100644 --- a/include/osmocom/gapk/benchmark.h +++ b/include/osmocom/gapk/benchmark.h @@ -22,35 +22,13 @@ #include <osmocom/gapk/get_cycles.h> #include <osmocom/gapk/codecs.h> -#define NUM_AVG 102400 +#define OSMO_GAPK_CYCLES_NUM_AVG 102400 struct osmo_gapk_bench_cycles { - cycles_t enc[NUM_AVG]; + cycles_t enc[OSMO_GAPK_CYCLES_NUM_AVG]; unsigned int enc_used; - cycles_t dec[NUM_AVG]; + cycles_t dec[OSMO_GAPK_CYCLES_NUM_AVG]; unsigned int dec_used; }; extern struct osmo_gapk_bench_cycles osmo_gapk_bench_codec[_CODEC_MAX]; - -static inline void benchmark_stop(enum osmo_gapk_codec_type codec, - int encode, unsigned long cycles) -{ - struct osmo_gapk_bench_cycles *bc = &osmo_gapk_bench_codec[codec]; - - if (encode) { - bc->enc_used = (bc->enc_used + 1) % NUM_AVG; - bc->enc[bc->enc_used] = cycles; - } else { - bc->dec_used = (bc->dec_used + 1) % NUM_AVG; - bc->dec[bc->dec_used] = cycles; - } -} - -#define BENCHMARK_START do { \ - cycles_t _cycles_start, _cycles_stop; \ - _cycles_start = get_cycles() - -#define BENCHMARK_STOP(x,y) _cycles_stop = get_cycles(); \ - benchmark_stop(x, y, _cycles_stop - _cycles_start); \ - } while (0) |