From 756494d27e1e575a40a262c083e870a62e0f142d Mon Sep 17 00:00:00 2001 From: "mjs@apple.com" Date: Sun, 11 Mar 2012 09:11:58 +0000 Subject: [PATCH] Add --instruments option to sunspider to profile with Instruments https://bugs.webkit.org/show_bug.cgi?id=80783 Reviewed by Filip Pizlo. PerformanceTests/SunSpider: * resources/TimeProfile20us.tracetemplate: Added. * sunspider: (runTestsOnce): Tools: * Scripts/run-sunspider: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@110389 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- PerformanceTests/SunSpider/ChangeLog | 11 +++++++++ .../resources/TimeProfile20us.tracetemplate | Bin 0 -> 9974 bytes PerformanceTests/SunSpider/sunspider | 26 ++++++++++++++++----- Tools/ChangeLog | 9 +++++++ Tools/Scripts/run-sunspider | 4 ++++ 5 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 PerformanceTests/SunSpider/resources/TimeProfile20us.tracetemplate diff --git a/PerformanceTests/SunSpider/ChangeLog b/PerformanceTests/SunSpider/ChangeLog index d85348e..f6c2fb4 100644 --- a/PerformanceTests/SunSpider/ChangeLog +++ b/PerformanceTests/SunSpider/ChangeLog @@ -1,3 +1,14 @@ +2012-03-11 Maciej Stachowiak + + Add --instruments option to sunspider to profile with Instruments + https://bugs.webkit.org/show_bug.cgi?id=80783 + + Reviewed by Filip Pizlo. + + * resources/TimeProfile20us.tracetemplate: Added. + * sunspider: + (runTestsOnce): + 2011-11-15 Andy Wingo Extend sunspider driver to be able to run kraken diff --git a/PerformanceTests/SunSpider/resources/TimeProfile20us.tracetemplate b/PerformanceTests/SunSpider/resources/TimeProfile20us.tracetemplate new file mode 100644 index 0000000000000000000000000000000000000000..6d4ec65cfff213052bd4fe3a9eb790ac20113ac8 GIT binary patch literal 9974 zcmeHMd3+Pq_P8{ZBmjHD4WL>P}y8T zL|H8;i-3rTY$6IO$U_uS5Ea*_zNh|No{#7A-I=ze(D?lQ^FF`#$1nNhGn2XBd(OG% zo^$S*b1Ld;yunav>N$iFK@>%yXcR;D&}Yk%X32q|*Y7J!@>kpt6h8__1T89j*_(H687J%ye|JJ4>l2R(}pqa)~L^eQ@y-b826JLo)m7hOglqEFCQ z=xg*1`VRewenLNE0gKpz+hZ%1unpU>11I1_?8F^#N8Abb#;G_Br{fGc(WP`5T~1ffmGmLHimsvSX(Qc2chH@s zNxu4;8W-0g5DZlI>)pFVuC1$ahh%56Gw5cwav;?Fs&yf1oz#tntrI_A~RTmfap_$XhEXSGa?+r->XxJN;G8x`4k@4hH3* zGf?mIsSkb5P_^s~HUt^Ju0dz+xYA(CS!6;S;*oh$6HA}FRxWG0m4hzMG^TiTeaKx= zBNwZ3Y-G?l6kj%`xamK;8LJxgTTFBjSx|dqMQIb5+%x2c;3Rf!ws|Pn$ytzuY{-rr zC;=rRC+dJYqE09Ybw*uKSJVx4M?Fwa)C(n}6x17~LNvsH2DG39Js7|UvCs}ozyS|t zh=X_#Km-f42P;TmQ^=>I43vqoP#=_y`l1}v5A{bkp#f+h8iWR;A?%ui^4KpQ4MzoF z2L~jA6FNXg=mbg78M;7M=my=P2lRwq?3x70?3W99FwDhST_IOcu3-)=dq()!w$#_k zzEElDh&&gU;PS{Jx3{KPRy;f3E7y3M7e3xyQ!l$Xv#Ty3&+_`~gCzlX<%}Xm#l>;{ z8c#6`8=;UKP;upq#kKLtE>FF?rntuIkpm3NhHB)hP_Ey{82OY(5|gGXrQYlEUXv#1 zs`h$3vadD6(z-f1(8Msl$(Sa1L)FFZS+XZTz;@fkB{CWSxi8-6N+H| zKr_!NOixwJ-HIy%vZ4n*z$6WLM*BVT*g8di#i&&Z)%BiXKE<*Z;;93R(QC$q|DsRzUdihdC3{6 zY3a$CS(!tV`{rikC#R-m<`2tH%kGnvnx?qB1y!I*NLbh8hcc>SzB42ca5ro~GKy#W zK5t%XFK6n4Ue2cLf=+{Lok;mG&4tIZv(tJxvoiZGSkQ5ZQyCN0vE(#mVp?h{qtPcd zYrz6-1d7aj)6-L(X*p?51?lXQmF7%k-?YrkRA=ApzD^g{rP5!U;;v({Dy5aNDY2=^ zR+{&?)8Nd{s+5n8Q$#2$%DaARNBJw=HP;rPEPoc7jph_3rNU51X$c{7(L8hy4B3I^ zqXlRox)lMs4c(6JKzE|M(A{VeT8x%JZ%BnSNQVr_ge>R-+0Ykqpda*yn|3fiS3G?g zTF$;J)qCZC4tfMFXI`!N^#B;izJt_z<$n?khJnmlT*3OfI)5M(oZ$6&m?@~X(eg|& z{ZZapZ;1J6%dPC0>sYeQbxHNBhwW=m2^V9YlwUlG2Nk zGK!Kii;~h{IE;YtFah!bP0V%I)Hq9+)3%sFd-M`I1_kSyUE?@j}@ zxSrz)bdqsQM{l50Fbc*pE_S#XMuxd?B+Tb5ItK;o(OWQjJ$f6)OjUeZjj?JdDlaQy zL8dv}U(e+NdXI6rh%TXYD1;)$r3A)-eTrfz&T#>Mm6sjvVLl(DE6RGVr|~H|q|*2j zU4&9VDve?&DQgKjES99__3b+}Eq!QmT3&8$a%OJ+5Ee^vvXh5p_Q~p-k)M^3(>E>5 z<*(@5u-3ju|1+_yNI5iEklKKLK=I+f%(~bRQ@f(|JoWq<@0Dk}xE^6|pTi ziE^NDTxESAz~b-FKz*=!3_I2)vqjXpeI8}FFtaeLr0JvTcK{ktV|Y-t__W1 zuNF;v^Ly|tb{1WOx26;pDGLu%vM>|wgR^m8oP+z}{`e+501w22@L)Uy55>7S4}9Q< zI+zIo2to+zVHV7WInV%eVIIs^rsw0~xB!p9H{+3b6dsMo;IVidF2qH+7?;2TxE=0* zyI>J4fqP*oEQb}a67Giw;bBH#lI_dD_tny zCaK%fObGK=9JVc>Lm1E^U>m_YhcT^GbR(@6Czy+?@GUT8Bc6_{u@@G?tpFR9)BxA2 zNx*FrW_g2NmJ^n-6j9CeSr}0b$>)*haIs-JAv~uI9VN+75{x7m7zQrHx3>W*4DV7I z-pOgg&?R_jMCb|?dN&sxhCYZ_MTD+Vp^G^~82SX>7!mrU3cZKZhM`a49TB0sROo$N zR2aG!?~e$5QH3t!V#3fP_~l4Yv`mE#2m@ckr`rG(ot{#4Ix-AAhu>`jRPwu(D#bxz z;0O5QNI?9l3VeXmg`r>KZ`wc^bNsE!{2{Jg82SVLTN|jdrB_v|k8s8?^fy8yKnIc- z2JH^3IeiPXJ<$_`a&Ctov?F$Qq7oC~2v5u;j>Hpzh{QtL6DyI34IYEF@HjjH>tH=> zfQ_&THp7$92wS!j2T34_#7R1kj-(SwBArPW(v@^0-C-*{1y92^*bX~jCp-hYU^nc6 zXJPOEWo-VhjJE$DKH0IS764joaxTds10vXS4sMP+VPGy9-Ub-Sm&s^S*aoOLQ*+P@ zQ=C91M+7#W$A(2CU^QjO9K0qFcNO6}+@xCx{Em4#FWg z3`gK7ytIv+B(IUz$s6PpIZfUqXULz(S@IS+2gl%LI1aDCt8fBN!fWt4yaA`+G^X0NY`3P`tLIL|3K14u8_~$Sfb)q zYgF4_95&f+$aigkN-$|oV8Xzk$<;Q%Na2ZM8r=q{P`okfPy;nZ0=CI=s6efefNcUE zO{AUL02LWms;drXIkY=XZUba8wh4GNgJwqpwh4H2038wu*d|8M;dEphV5ERY3u$RY z;9crs?&NUG-n6IXREB~rbPAnHU340C(+XNiJ@6+u3va)RYIy+8Q;ZqjWoHasr90~y#~knY8uq(-6J8JBvgPSSgj^7 z%Uz>llOkbTUhkCxMv%d{s7`~T{gm{23uWgdTP17w)Q7!GxRRPsX`9`{0sg;M9zLq|r z)bp0Z!1Z(;d>$UyNH?3p} zc5$6r7u!=(b6S5gn``fC5tTkecTHg>)Ow#%waIgb+#Bd_6o36A#(GRKV<>xuG`E7^ zLwhN!nbPOzKKeY}k7m&qm?{pSL-Zg$L=V#=^eD6VWAtSg%j0azn+= zKbv)kQd-)IF0S*x9Z&JHif3ujDAwn>0moX0DIT^07uWrUk?T36c;sMZz^gjaA97<> zqqM_eBCB?ufhfRm1qcl2G#E8~pp5mwt*kfLleO~tp+W3j$4T;7qF6$vl4)cgOE6w1 z=g4Q|8}bwD(;8_!3zZ#c5iOzPX&LL%mb1t)jYSO)t)kWR78V?QtZN%!9ot!~TRWF| z#6so`yI6C6FH`n@dVs0;Fg?nYdz`*XPtw=vDf%Y;6Mc)mP0!N{^nH4XUZz*0>``e^ zc~ON?Q=;mkmPT!e+8_0P)Q{0|(b>^sqNhhMihd}1YxIHWGtoc97-KSGZi*QgGbpAY zW?W2ZOm)o6n8h(mW1fs@jCmpEeNB`mR?|+yX}W9DHT^XMHG?%nHDfh}8lR?46VQY- zvov!wb2ald3pJp*U2~`AZp~uNJ(@<%R?X9z?V6pMU79_by_$WR{h9-sgPOydqncxy z^O~H zovy2{hb~!{s>{%2>9Tb>y8gNWxmrF6chf{ierys*l!d^g6vkZ`F6vchh&*_t59+hv|pwN9afD zN9)Jx%k;PE@6#{SFW0ZouhwtWZ_)48pVa?kpoVCJ)6mh7Wawh(X6Rw)Wk@lk8qy7! zhCYVAhJJ=p!vw=b!(_u0gUjGHR2pQ%bc5G0!%%DR8)h1Uh6RQdhQ|z#8`c>%8x9)Y zGQ4g0-0-C_+GsY$8y&_(V+Ug=V`pQEG1ZuE%ry2f78+$E7*`oL8yk%$jISBrFrGG^ zF`hM^GrnVd*Z7|CqVWUchsKYMpBO)j)x_#z4Y9GYrdU2UE>?)O#9Cu*v5wfp*bcFs zVmrrLX`5+}X|HLYX}{@+=_S+4 zrdLd-P3KKlOrM&*H~nC`YWmgm8|%+#IX!3O+Hp3{!6k8BxNckzE{)6Jvbbz6hs);* zxUpOzSIm`i<=j+m8dt%2xS3p#o6F7T7IMHX;+Amta!a}8++*D1+-9zk+sZx7?dG24 zp5vb9Uf^EkPI70sv)noE9qtl$nfr*l!hOnp&;7t%<$mRU<1w%0^}La9$8)@cPvpDs z-S{4SFFu3M;AkMnQvr};DdS^fh5K7Wb7%zwoHh5wfSng4~q%KvJP zGRK&;X1&>Hwwi6`j^-qD7jrjrZ*!VC!<=Q#Hs_i1&BM(F=2G(nbHE%j&oa+3&o$3C zFEoSscJrO)yUmNu_n7Z9H=4JapEhqd?=vq2zf%jP$1ka6bi*csW3tC2vtI@;1^~JL1C^iUsx!BuvAzsJS?md9u*!F zHVT`CMq#V)obbGGSU4&i6OIdS2&aWJ!dc<6@R9I^@Mqy`;V;6E!q37l!c|c#>P23R z69v&CCWub4qnIS7i5X%)@g{MgI9MDmju1zRqs2*LxmYR6;&jm~)`+S_=LDk+#&82_lf((1L8~K%i=5I3Gr?5y!e6mq4=@*iTIWHjrdpb zJMo_uWU*Ro7KbI#(!tWn(%I70(%sV2l5FX1NweH+8D$w`8D}Z7lvu`F$}E#C<(8?I zX_gAh9hR+@^X)b5v)Y%pzqkGK?JrwntUatnR+rUnt+w7`t+D#7_14+e2J1ZQV(UHD zmDUHW4_P0vK5kuS-C*5h-DTZleZl&o^^o<5^;PRh>+9B2*7vLztyip{T0ggbY5msv zz4Zs{PZE`)C8N|%;v}e{E#*l4rJ+)ulrI%XrP2gxsx(cikUY{1 zsaEn!Go^(RNQBGOZ;P`DwvM(WTTffEt+y@B*4Nh0c9U(OZLn>$ zZLDpYt-|K9RoSX-x7ccIK3kpbHrpMxyKIYWOKkVrmfDuvR@xr1J#RZ|`_lGLdpCQD zeV%=R{cigM_J{17>`&Ua*q^d*v+uA!W8ZB*YCmQ_ZhzH&(*C;rl>JTnC-(2`e|K;W zha=UI>lo)Ka+Em6J6sO8qrx%6G1qaMW0_-x;{nG*j#Z9F9gU8yj%|(|j$MvDj^mEA zj&qLljth>9jt>%|5@Hi<3C@I+guw~kgn0>T5{@NYO4KE$C1xaMC1xk)B=%1nkT@uD WNaD>+Co&;TS9-kph;F_lj`|mQCTuML literal 0 HcmV?d00001 diff --git a/PerformanceTests/SunSpider/sunspider b/PerformanceTests/SunSpider/sunspider index 2ff0dc4..0409cff 100755 --- a/PerformanceTests/SunSpider/sunspider +++ b/PerformanceTests/SunSpider/sunspider @@ -36,6 +36,7 @@ my $showHelp = 0; my $runShark = 0; my $runShark20 = 0; my $runSharkCache = 0; +my $runInstruments = 0; my $ubench = 0; my $v8suite = 0; my $suite = ""; @@ -58,6 +59,7 @@ Usage: $programName --shell=[path] [options] --shark Sample execution time with the Mac OS X "Shark" performance testing tool (implies --runs=1) --shark20 Like --shark, but with a 20 microsecond sampling interval --shark-cache Like --shark, but performs a L2 cache-miss sample instead of time sample + --instruments Sample execution time with the Mac OS X "Instruments" tool (Time Profile) (implies --runs=1) --suite Select a specific benchmark suite. The default is sunspider-1.0 --ubench Use microbenchmark suite instead of regular tests. Same as --suite=ubench --v8-suite Use the V8 benchmark suite. Same as --suite=v8-v4 @@ -71,6 +73,7 @@ GetOptions('runs=i' => \$testRuns, 'shark' => \$runShark, 'shark20' => \$runShark20, 'shark-cache' => \$runSharkCache, + 'instruments' => \$runInstruments, 'suite=s' => \$suite, 'ubench' => \$ubench, 'v8-suite' => \$v8suite, @@ -91,7 +94,7 @@ $suitePath = "tests/" . $suitePath unless ($suite =~ /\//); $runShark = 1 if $runSharkCache; $runShark = 20 if $runShark20; -$testRuns = 1 if $runShark; +$testRuns = 1 if $runShark || $runInstruments; if ($runShark && ! -x "/usr/bin/shark") { die "Please install CHUD tools from http://developer.apple.com/tools/download/\n"; } @@ -162,15 +165,17 @@ sub writePrefixFile() dumpToFile($prefix, $prefixFile); } -sub runTestsOnce($) +sub runTestsOnce($$) { - my ($useShark) = @_; + my ($useShark, $useInstruments) = @_; my $shellArgs = $jsShellArgs . " -f $prefixFile -f resources/sunspider-standalone-driver.js 2> " . File::Spec->devnull(); my $output; if ($useShark) { my $intervalArg = $useShark == 20 ? "-I 20u" : ""; my $cacheArg = $runSharkCache ? "-c $sharkCacheProfileIndex" : ""; $output = `shark $intervalArg $cacheArg -i -1-q "$jsShellPath" $shellArgs`; + } elsif ($useInstruments) { + $output = `instruments -t "resources/TimeProfile20us.tracetemplate" "$jsShellPath" $shellArgs`; } else { $output = `"$jsShellPath" $shellArgs | grep -v break`; } @@ -205,10 +210,10 @@ if ($testsPattern) { print STDERR "Found " . scalar(@tests) . " tests\n"; } die "No tests to run" unless scalar(@tests); -print STDERR "Running SunSpider once for warmup, then " . ($runShark ? "under Shark" : "$testRuns time" . ($testRuns == 1 ? "" : "s")) . "\n"; +print STDERR "Running SunSpider once for warmup, then " . ($runShark ? "under Shark" : ($runInstruments ? "under Instruments" : "$testRuns time" . ($testRuns == 1 ? "" : "s"))) . "\n"; writePrefixFile(); -runTestsOnce(0); +runTestsOnce(0, 0); print "Discarded first run.\n"; my $result; @@ -217,7 +222,7 @@ my @results = (); my $total = 0; print "["; while ($count++ < $testRuns) { - $result = runTestsOnce($runShark); + $result = runTestsOnce($runShark, $runInstruments); $result =~ s/\r\n/\n/g; chomp $result; push @results, $result; @@ -242,3 +247,12 @@ if ($runShark) { exec "/usr/bin/open", $profileFile; } } + +if ($runInstruments) { + my $newestTrace = newestFile(".", qr/\.trace$/); + if ($newestTrace) { + my $profileFile = "$resultDirectory/sunspider-profile-$timeString.trace"; + rename $newestTrace, $profileFile or die; + exec "/usr/bin/open", $profileFile; + } +} diff --git a/Tools/ChangeLog b/Tools/ChangeLog index fe7ca33..9fee141 100644 --- a/Tools/ChangeLog +++ b/Tools/ChangeLog @@ -1,3 +1,12 @@ +2012-03-11 Maciej Stachowiak + + Add --instruments option to sunspider to profile with Instruments + https://bugs.webkit.org/show_bug.cgi?id=80783 + + Reviewed by Filip Pizlo. + + * Scripts/run-sunspider: + 2012-03-11 Viatcheslav Ostapenko [Qt] [WK2] Support threaded renderer in WK2 diff --git a/Tools/Scripts/run-sunspider b/Tools/Scripts/run-sunspider index 176491c..1b60a75 100755 --- a/Tools/Scripts/run-sunspider +++ b/Tools/Scripts/run-sunspider @@ -41,6 +41,7 @@ my $testRuns = 10; # This number may be different from what sunspider defaults t my $runShark = 0; my $runShark20 = 0; my $runSharkCache = 0; +my $runInstruments = 0; my $suite = ""; my $ubench = 0; my $v8suite = 0; @@ -61,6 +62,7 @@ Usage: $programName [options] [options to pass to build system] --shark Sample with the Mac OS X "Shark" performance testing tool (implies --runs=1) --shark20 Like --shark, but with a 20 microsecond sampling interval --shark-cache Like --shark, but performs a L2 cache-miss sample instead of time sample + --instruments Sample with the Mac OS X "Instruments" tool (Time Profile) (implies --runs=1) --suite Select a specific benchmark suite. The default is sunspider-0.9.1 --ubench Use microbenchmark suite instead of regular tests. Same as --suite=ubench --v8-suite Use the V8 benchmark suite. Same as --suite=v8-v4 @@ -74,6 +76,7 @@ GetOptions('root=s' => sub { my ($x, $value) = @_; $root = $value; setConfigurat 'shark' => \$runShark, 'shark20' => \$runShark20, 'shark-cache' => \$runSharkCache, + 'instruments' => \$runInstruments, 'suite=s' => \$suite, 'ubench' => \$ubench, 'v8-suite' => \$v8suite, @@ -125,6 +128,7 @@ push @args, "--set-baseline" if $setBaseline; push @args, "--shark" if $runShark; push @args, "--shark20" if $runShark20; push @args, "--shark-cache" if $runSharkCache; +push @args, "--instruments" if $runInstruments; push @args, "--suite=${suite}" if $suite; push @args, "--ubench" if $ubench; push @args, "--v8-suite" if $v8suite; -- 2.7.4