Hi, 

I am trying to look at performance of V8. At this time, this is all on X86. 
To build V8, I am using NDK compiler that comes when I download V8. That is 
pretty straightforward process as mentioned. Once I build "release" or 
 "debug" V8, I ran mandreel and codeload Octance benchmarks with valgrind. 
Then I use cg_annotate to look at Instruction count, data read/write, 
branches etc.  I am just curious where the bottlenecks are. I get the 
following numbers for mandreel. 

--------------------------------------------------------------------------------
           Ir            Dr            Dw         Bi          Bc
--------------------------------------------------------------------------------
6,737,556,200 1,975,238,610 1,015,483,012 65,020,470 941,081,112  PROGRAM 
TOTALS

--------------------------------------------------------------------------------
           Ir          Dr          Dw         Bi          Bc  file:function
--------------------------------------------------------------------------------
2,750,360,898 769,151,058 269,297,660 45,068,095 410,353,595  ???:???
  165,387,529  59,780,937  25,440,838      9,340  27,302,136 
 ???:v8::internal::Scanner::ScanIdentifierOrKeyword()
  156,426,896  43,240,550  25,588,801          0  17,909,648 
 
???:v8::internal::ExpressionClassifier<v8::internal::ParserTypes<v8::internal::Parser>
 
>::Accumulate(v8::internal::ExpressionClassifier<v8::internal::ParserTypes<v8:: 
        internal::Parser> >*, unsigned int, bool)
  150,476,281  44,181,365  28,594,154  3,145,871   9,250,952 
 ???:v8::internal::Scanner::Scan()
..
..


It shows there there are 2.7billion instructions for ???:???. I am guessing 
that these are the instructions that are reponsible for hidden classes, 
loading/creating/deleting/accessing etc. If my guess is not correct, please 
let me know. And then there are usual 165 million for 
v8::internal::Scanner::ScanIdentifierOrKeyword(),150 million for scan() etc.

However, what is interesting is this - on the subsequent run on the same 
machine, I see the following numbers:
--------------------------------------------------------------------------------
            Ir            Dr            Dw          Bi            Bc
--------------------------------------------------------------------------------
12,369,840,202 3,844,013,654 1,701,470,472 248,336,756 1,605,561,615 
 PROGRAM TOTALS

--------------------------------------------------------------------------------
           Ir            Dr          Dw          Bi          Bc 
 file:function
--------------------------------------------------------------------------------
6,361,147,238 2,029,054,548 684,679,708 228,306,958 762,170,252  ???:???
  690,157,426   260,436,764 130,218,388           0  91,152,866 
 ???:v8::internal::Runtime_TryInstallOptimizedCode(int, 
v8::internal::Object**, v8::internal::Isolate*)
  470,287,848   104,517,164  26,109,566           0  91,422,886 
 
/build/glibc-bfm8X4/glibc-2.23/nptl/../nptl/pthread_mutex_lock.c:pthread_mutex_lock
  365,612,760   104,464,484  13,067,997           0 104,438,144 
 /build/glibc-bfm8X4/glibc-2.23/nptl/pthread_mutex_unlock.c:pthread_mutex_unlock
  364,611,492    91,152,878 104,174,716           0  13,021,838 
 
???:v8::internal::StackGuard::CheckAndClearInterrupt(v8::internal::StackGuard::InterruptFlag)
  165,387,529    59,780,937  25,440,838       9,340  27,302,136 
 ???:v8::internal::Scanner::ScanIdentifierOrKeyword()
  156,426,896    43,240,550  25,588,801           0  17,909,648 
 
???:v8::internal::ExpressionClassifier<v8::internal::ParserTypes<v8::internal::Parser>
 
>::Accumulate(v8::internal::ExpressionClassifier<v8::internal::ParserTypes<v8:: 
     internal::Parser> >*, unsigned int, bool)
  150,476,281    44,181,365  28,594,154   3,145,871   9,250,952 
 ???:v8::internal::Scanner::Scan()


All the numbers to the V8 functions remained the same; however all hidden 
classes numbers and calls to the library went off the chart. For eg, 
instructions dealing with hidden classes went from 2.7 billion to 6.3 
billion. I don't see how using the same benchmark would make such huge 
difference in the numbers. Can anyone please explain? 

Also, how does V8 community look at performance numbers if not using 
standard performance monitoring tools like valgrind? Is there any other way 
to look at performance numbers?

Thanks.
Sirish

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to