Profiling

Edward Nevill ed at camswl.com
Wed Feb 25 06:01:23 PST 2009


>
>This one I find really interesting.  Is libffi showing up in your
>profile at all?  Andrew Haley and I have often wondered what
>performance impace using libffi has, and Andrew has some ideas for
>speeding up libffi if it turns out to be a bottleneck.  If your
>profile is excluding libffi, it'd be really interesting to see
>what it looked like with it in.
>
>Cheers,
>Gary

Hi Gary,

The previous profiles did not include libffi because I was using the
shared library. I have redone it with a static libffi. Here are the
top 50 results. libffi accounts for 0.5% on this particular app
(Think Free Office). I also did CaffeineMark and EEMBC but the
results on those were negligible (<0.10%).

Regards,
Ed.

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls   s/call   s/call  name    
 23.81     11.98    11.98 33820691     0.00     0.00  BytecodeInterpreter::run(BytecodeInterpreter*)
 10.99     17.51     5.53    33987     0.00     0.00  CppInterpreter::main_loop(int, Thread*)
  5.96     20.51     3.00 17775389     0.00     0.00  methodOopDesc::result_type() const
  4.79     22.92     2.41 17840744     0.00     0.00  SignatureIterator::iterate_returntype()
  3.90     24.88     1.96 16469679     0.00     0.00  InterpreterFrame::build(ZeroStack*, methodOopDesc*, JavaThread*)
  2.48     26.13     1.25 15215340     0.00     0.00  CppInterpreter::normal_entry(methodOopDesc*, int, Thread*)
  2.44     27.36     1.23 23488682     0.00     0.00  ConstantPoolCacheEntry::is_resolved(Bytecodes::Code) const
  2.38     28.56     1.20 32975124     0.00     0.00  os::vm_page_size()
  2.29     29.71     1.15 18024369     0.00     0.00  SignatureIterator::parse_type()
  2.13     30.78     1.07                             run_opt_entry
  1.85     31.71     0.93  1254203     0.00     0.00  CppInterpreter::native_entry(methodOopDesc*, int, Thread*)
  1.61     32.52     0.81 17883786     0.00     0.00  SignatureIterator::SignatureIterator(symbolHandle)
  1.25     33.15     0.63                             do_getfield_state1
  0.85     33.58     0.43   207980     0.00     0.00  typeArrayKlass::allocate(int, Thread*)
  0.81     33.99     0.41  1777040     0.00     0.00  CppInterpreter::accessor_entry(methodOopDesc*, int, Thread*)
  0.81     34.40     0.41                             run_opt_exit
  0.70     34.75     0.35  6219137     0.00     0.00  BytecodeInterpreter::astore(int*, int, int*, int)
  0.68     35.09     0.34                             do_iload_state1
  0.64     35.41     0.32 15293338     0.00     0.00  ThreadShadow::clear_pending_exception()
  0.62     35.72     0.31 16657203     0.00     0.00  os::current_stack_pointer()
  0.56     36.00     0.28  2348866     0.00     0.00  void oop_store<oopDesc*>(oopDesc**, oopDesc*)
  0.56     36.28     0.28   304045     0.00     0.00  SymbolTable::lookup_only(char const*, int, unsigned int&)
  0.48     36.52     0.24 17819959     0.00     0.00  ResultTypeFinder::set(int, BasicType)
  0.48     36.76     0.24  4007672     0.00     0.00  SignatureInfo::do_void()
  0.44     36.98     0.22  5069507     0.00     0.00  SignatureInfo::do_object(int, int)
  0.44     37.20     0.22                             do_aload_0_state0
  0.42     37.41     0.21                             do_iload_state0
  0.42     37.62     0.21                             ffi_call
  0.40     37.82     0.20    44574     0.00     0.00  ClassFileParser::parse_method(constantPoolHandle, bool, AccessFlags*, typeArrayHandle*, typeArrayHandle*, typeArrayHandle*, Thread*)
  0.36     38.00     0.18  1326820     0.00     0.00  HandleMarkCleaner::~HandleMarkCleaner()
  0.32     38.16     0.16  1123793     0.00     0.00  Klass::is_subtype_of(klassOopDesc*) const
  0.30     38.31     0.15  4430397     0.00     0.00  SignatureInfo::do_int()
  0.30     38.46     0.15  2539725     0.00     0.00  SignatureInfo::do_bool()
  0.30     38.61     0.15                             do_aload_0_state1
  0.30     38.76     0.15                             do_goto_state0
  0.30     38.91     0.15                             do_iload_2_state1
  0.28     39.05     0.14    43798     0.00     0.00  klassVtable::update_super_vtable(instanceKlass*, methodHandle, int, bool, Thread*)
  0.26     39.18     0.13     9376     0.00     0.00  constantPoolKlass::oop_follow_contents(oopDesc*)
  0.26     39.31     0.13                             do_if_icmpge_state1
  0.26     39.44     0.13                             ffi_prep_args
  0.24     39.56     0.12   128869     0.00     0.00  instanceKlass::uncached_lookup_method(symbolOopDesc*, symbolOopDesc*) const
  0.24     39.68     0.12                             do_aload_1_state0
  0.24     39.80     0.12                             do_bipush_state1
  0.22     39.91     0.11       16     0.01     0.01  ContiguousSpace::prepare_for_compaction(CompactPoint*)
  0.22     40.02     0.11                             do_if_icmpne_state1



More information about the zero-dev mailing list