 0c4e774fad
			
		
	
	
	0c4e774fad
	
	
	
		
			
			Caching registers value into an array. Got about 4% speed up
of perf_reg_value function for report command processing
dwarf unwind stacks.
Output from report over 1.5 GB data with DWARF unwind stacks:
(TODO fix perf diff)
  current code:
   5.84%     perf  perf                       [.] perf_reg_value
  change:
   1.94%     perf  perf                       [.] perf_reg_value
And little bit of overall speed up:
(perf stat -r 5 -e '{cycles,instructions}:u' ...)
  current code:
   310,298,611,754      cycles                     ( +-  0.33% )
   439,669,689,341      instructions               ( +-  0.03% )
     188.656753166 seconds time elapsed            ( +-  0.82% )
  change:
   291,315,329,878      cycles                     ( +-  0.22% )
   391,763,485,304      instructions               ( +-  0.03%  )
     180.742249687 seconds time elapsed            ( +-  0.64% )
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jean Pihet <jean.pihet@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1401892622-30848-2-git-send-email-jolsa@kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
		
	
			
		
			
				
	
	
		
			29 lines
		
	
	
	
		
			555 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			555 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __PERF_REGS_H
 | |
| #define __PERF_REGS_H
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| struct regs_dump;
 | |
| 
 | |
| #ifdef HAVE_PERF_REGS_SUPPORT
 | |
| #include <perf_regs.h>
 | |
| 
 | |
| int perf_reg_value(u64 *valp, struct regs_dump *regs, int id);
 | |
| 
 | |
| #else
 | |
| #define PERF_REGS_MASK	0
 | |
| #define PERF_REGS_MAX	0
 | |
| 
 | |
| static inline const char *perf_reg_name(int id __maybe_unused)
 | |
| {
 | |
| 	return NULL;
 | |
| }
 | |
| 
 | |
| static inline int perf_reg_value(u64 *valp __maybe_unused,
 | |
| 				 struct regs_dump *regs __maybe_unused,
 | |
| 				 int id __maybe_unused)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| #endif /* HAVE_PERF_REGS_SUPPORT */
 | |
| #endif /* __PERF_REGS_H */
 |