diff options
Diffstat (limited to 'tools/perf/bench/mem-memcpy.c')
| -rw-r--r-- | tools/perf/bench/mem-memcpy.c | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/tools/perf/bench/mem-memcpy.c b/tools/perf/bench/mem-memcpy.c index db82021f4b91..71557225bf92 100644 --- a/tools/perf/bench/mem-memcpy.c +++ b/tools/perf/bench/mem-memcpy.c @@ -5,7 +5,6 @@   *   * Written by Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp>   */ -#include <ctype.h>  #include "../perf.h"  #include "../util/util.h" @@ -24,6 +23,7 @@  static const char	*length_str	= "1MB";  static const char	*routine	= "default"; +static int		iterations	= 1;  static bool		use_clock;  static int		clock_fd;  static bool		only_prefault; @@ -35,6 +35,8 @@ static const struct option options[] = {  		    "available unit: B, MB, GB (upper and lower)"),  	OPT_STRING('r', "routine", &routine, "default",  		    "Specify routine to copy"), +	OPT_INTEGER('i', "iterations", &iterations, +		    "repeat memcpy() invocation this number of times"),  	OPT_BOOLEAN('c', "clock", &use_clock,  		    "Use CPU clock for measuring"),  	OPT_BOOLEAN('o', "only-prefault", &only_prefault, @@ -121,6 +123,7 @@ static u64 do_memcpy_clock(memcpy_t fn, size_t len, bool prefault)  {  	u64 clock_start = 0ULL, clock_end = 0ULL;  	void *src = NULL, *dst = NULL; +	int i;  	alloc_mem(&src, &dst, len); @@ -128,7 +131,8 @@ static u64 do_memcpy_clock(memcpy_t fn, size_t len, bool prefault)  		fn(dst, src, len);  	clock_start = get_clock(); -	fn(dst, src, len); +	for (i = 0; i < iterations; ++i) +		fn(dst, src, len);  	clock_end = get_clock();  	free(src); @@ -140,6 +144,7 @@ static double do_memcpy_gettimeofday(memcpy_t fn, size_t len, bool prefault)  {  	struct timeval tv_start, tv_end, tv_diff;  	void *src = NULL, *dst = NULL; +	int i;  	alloc_mem(&src, &dst, len); @@ -147,7 +152,8 @@ static double do_memcpy_gettimeofday(memcpy_t fn, size_t len, bool prefault)  		fn(dst, src, len);  	BUG_ON(gettimeofday(&tv_start, NULL)); -	fn(dst, src, len); +	for (i = 0; i < iterations; ++i) +		fn(dst, src, len);  	BUG_ON(gettimeofday(&tv_end, NULL));  	timersub(&tv_end, &tv_start, &tv_diff); | 
