www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - profiling

reply "Carlos Santander B." <csantander619 gmail.com> writes:
About the output produced when using -gt:
I understand the lower part of the trace.log file (Timer is .... times in 
microsecs... etc). But what does the upper part mean? There're just a bunch of 
numbers without any title or anything.

Besides, is there any free profiler on Windows that works with DMD? I tried 
AMD's CodeAnalyst, but it doesn't understand the generated code, so it outputs 
assembler code.

-----------------------
Carlos Santander Bernal 
Nov 24 2004
next sibling parent reply "Ilya Zaitseff" <sark7 mail333.com> writes:
 About the output produced when using -gt:
 I understand the lower part of the trace.log file (Timer is .... times in
 microsecs... etc). But what does the upper part mean? There're just a  
 bunch of
 numbers without any title or anything.

 Besides, is there any free profiler on Windows that works with DMD? I  
 tried
 AMD's CodeAnalyst, but it doesn't understand the generated code, so it  
 outputs
 assembler code.

 -----------------------
 Carlos Santander Bernal
I use AMD CodeAnalyst. It works for me.
Nov 24 2004
parent "Carlos Santander B." <csantander619 gmail.com> writes:
"Ilya Zaitseff" <sark7 mail333.com> escribió en el mensaje 
news:opshzvx6cfaaezs2 ilya.tec.amursk.ru...
| I use AMD CodeAnalyst. It works for me.

Oh, yes, you're absolutely right. I had made a mistake regarding the project 
options. Thanks and sorry for that.

-----------------------
Carlos Santander Bernal 
Nov 24 2004
prev sibling next sibling parent "Walter" <newshound digitalmars.com> writes:
The upper part shows you who called who, so you can tell why function xxyy
was being called so many times.

"Carlos Santander B." <csantander619 gmail.com> wrote in message
news:co372s$9lt$1 digitaldaemon.com...
 About the output produced when using -gt:
 I understand the lower part of the trace.log file (Timer is .... times in
 microsecs... etc). But what does the upper part mean? There're just a
bunch of
 numbers without any title or anything.

 Besides, is there any free profiler on Windows that works with DMD? I
tried
 AMD's CodeAnalyst, but it doesn't understand the generated code, so it
outputs
 assembler code.

 -----------------------
 Carlos Santander Bernal
Nov 24 2004
prev sibling parent "Lionello Lunesu" <lionello.lunesu crystalinter.remove.com> writes:
While we're on the subject: what are your (anybody's) thoughts on VS2005's 
PGO?

http://msdn.microsoft.com/library/en-us/dv_vstechart/html/profileguidedoptimization.asp

"The idea behind PGO is simple: Generate profiles from running the 
executable/dll on real-world inputs, which are then used to assist the 
compiler in generating optimized code for the particular executable. "

Lionello. 


begin 666 profileguidedoptimization_fig1.jpg

M;V)E`&3 `````?_;`(0`%! 0&1(9)Q<7)S(F'R8R+B8F)B8N/C4U-34U/D1!
M04%!04%$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1 $5&1D '" F&! F
M-B8 )C9$-BLK-D1$1$(U0D1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$





MNZ083&2P='= GU!9W'^ D?(%45]/,9,>YPB'&(=;ICFT77&%G"J;[<9F+Z:S

M )KMRF3?6:W'E&\NI=C+ZC=2>74NQE]1NI2D5E$7RZEV,OJ-U)Y=2[&7U&ZE
M*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?4;J4I$$7RZEV,OJ
M-U)Y=2[&7U&ZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?4;
MJ4I$$7RZEV,OJ-U)Y=2[&7U&ZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R
M^HW4GEU+L9?4;J6]S P%SK +2M'U\CI>HZD#RZEV,OJ-U)Y=2[&7U&ZD^OD=
M+U%/KY'2]10/+J78R^HW4GEU+L9?4;J3Z^1TO44^OD=+U% \NI=C+ZC=2>74
MNQE]1NI/KY'2]13Z^1TO44#RZEV,OJ-U)Y=2[&7U&ZD^OD=+U%/KY'2]10/+
MJ78R^HW4GEU+L9?4;J3Z^1TO44^OD=+U% \NI=C+ZC=2>74NQE]1NI/KY'2]
M1U+W*J9<XEK'1(M0>/+J78R^HW4GEU+L9?4;J4I$$7RZEV,OJ-U)Y=2[&7U&
MZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?4;J4I$$7RZEV,
MOJ-U)Y=2[&7U&ZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?
M4;J4I801O+J78R^HW4GEU+L9?4;J4I$$7RZEV,OJ-U)Y=2[&7U&ZE*1!%\NI
M=C+ZC=2>74NQE]1NI2D04GT5/LV?J.B$6_\`<(B%0<'EU)C)^&P"%O-SQL6A
M[)3'8<3K/Y1;=_-'/D[G*\W-*;,W?(#P#S&WB*K*J<Y\][ 6L 2VR ``NB<)
M-HMX+ECV3W='5;],]O7^O+51F49\N#G1QB%C?<?99[5UBY:GJC(FM+G!S<7Q
M&!''BPB$/P71R*F5/![IP="PP5NOQC\4=LN9;\)"(BT8B(B#G)V_W.>YDD 8

M\(0M`-F5MOX)61JZ VF9,XL4-'\HX<HX<?53]J^/SG1Q>[W-4'NH-Q\X-L-]
MO 8<+K<UI(_F'DLC8<=F;$[A'0/#E8H]O(L/JIMPFOT?Y(Y7CU7QM]-KJB]L
MU_6#M' [3[,UJKB#G+X?,[E^`99C<L$`GG8G1Z1-L(\67#S3/J+=N]JIH!+P

M)_RRX^'XC:9RATY65!WF]S*=Q!+3S;1??P9:52RZJ81\;HF$8N-]N7H3;>:^
M4R6NH1<UWTSINZQ3OIG3=UBLO]C7XJ>*^JIYD,+X1A"R[.O3)HF-Q-M"YY\Q



M'S 22(9<:9.*3C3&H?>Y99<B=[EEER*483,17JF,: _)[U![SA4C=[L50X_R
M?\E%6UGJM8K,52[TFO9/:T.(:6$V&'YVJ&RIF$#GNY2L-^R:>6LF73(N:[Z9
MTW=8IWTSINZQ6?\`L:_%3Q7<VK$J:);A81'%Z5)C8N9<]SK7$GC5A05N$B2^
MXV-/N4Z=W+;%_(NJW5+O??S-VN$L-+YA&*$8`#CM5TN

MD PX8'D7H;MFE ?S;<1(Q"P-A:>5=\UZI[1GFL^;UNV?UD\WK=L_K+6V G.A
M`"V'YAG;B_VVH-WSB<($3P<6+UBY6QU__E'JWMWY7-NG.],"I4O[HKF7EKOF
M;J H,O=LY[ T -CI(L$<,>6Q>&[OG.:'AO-)+8QT>Z_D5>/5\:IS74[N^YVU
M,QLF<S YQ #FVB)RX5TH7SJDD=Q64XC'$9;^7W<*^B 607%W::ZV</%::VWR
MRB(N=81$05?[A$_<(B&=Q?H)'R-535N8Z>X,EF.)WYC$NN) '\86A6VXOT$C

MTZ,LX5_34C*4$,CSC$Q,5SM(V4)\LXWQQ-_(!;P\XW^[3%=4+4ZY,91VVYQ[
M?G_EZ1$6C(1$0?-Y[O[CQFQ.RR]"\=Z<M.E=?5?;5-4.+V%TMSK3A-D>( ^J
M"KIGVE,'^.>"/YF:B KFU[6,:W#CPX8!^:!B8&^!Z)LS\"VLWG+! X.(!#HV

M;RB#L\."Q::FL$YC&M$(`1$!"($+./A4L?:]=G=+ZQ[.M>V?:E4?BFL'*?<,
MO4XPRI \A7GVPXNJ7QZ!]H6Z7]I&^9//$UH]IU*YW?NF1N^)E ESK"YQB=7(


M48 7%WK^'V\2OZBG94,,N:,33>#G6P`"P).O67.#E6BK$)$P#H.]BYR6<4MI

MI()+AAS66\95/WDR_G1NASM>7*L%[]#LUX.:[/EPJ4+H6 &)M$0`W B?4O3 
M&M!BZXDG#Q9E2=Y,T.],<LN.(OF&PAT#I!MX\N%/0708;3$PCA'-ONX>'U+R
M!$1Q660L.G1H5/WDP]*'$?1GO]/+F=Z_AA"&?C]OLM076& L)B70NXXY]/XH
M]I% )C9&(LM,/8J7O)FAU_#EQ>ZV+O)A`$'0_JA[<L_ %P8X8Q-L8"!T$VV^


M+(.TX ?<H7DU4V&%S(0:.3T7967KHUA4NLV\KYL<YY15])G*[5EGQ)Y15])G
M^K+*^'-72(J?;T^$\K\N/JI<ZDF-EO YSQ$8(D^[W9]*O-V[O,D"9-MF$>AO
M`/>IKJ:6Z:)Q$7M&$.T!;E,Z]9<PNUOH+A_N::96\&3&PBUC2(\97<+A/O!K
MFU37P.$L`!S1B5U=%DW]?&&>WA6^8S",,&PLLAH).G22;4%9.G R ,9<'7-B

MW [N!X860]Z\-KJAI :T$$X88+'0`;#D
MV"UNWP" US(MPEC '0BTQ ;C!PC;:>*]99OKG1.#ZJII6M<Y :""UI+=#L7M
M'(M0KYK6M P\TDM.$1 Z]L>C:;.%1ZBK$YC&X2"R-I=&()CH]ZC+762SUDRC
M"VH9[IU9(+ !!S&B%E 7TE?,-S-=,K9(:"2'M-F +Z>N/^19RF/A?5E$1<JP

M(BYS`&CWG "RR4VOE.GS&$/TLB,8A98;_2%3?U_3/^&VGI^O:>GC/XHM).,F


M!B"0640%A91!B"RB("(B`B( (B("US)+)HPO`<#F(BMB(*:=]M;OG7RL)_D)
M'X>I0YGV=1N^%SV^D'W+I$5N6T]QRQ^RJ?:O_P!.I/\`TJGVK_\`3J74HIY[

MA$5 1$0$1$%7^X1/W"(A#HJ/ZG=].6F#FL!!]"\RZ7>$EN!A !F#VP];58;B
M_02/D"E3FSG0[ES6Z<32[WA5NDMSZR_ TF]DXXEGXJJDW7-[P3)YN.*_$2;+
MS99=8- 5XH7=UNTE^&>VG=UNTE^&>VIFLGA&VUVN:G(H/=UNTE^&>VG=UNTE









MNGRZ-%0TV\Y]0\2VN +HP)EV1%O3T*Q[NMVDOPSVU:67UB^NTVF=4Y%![NMV
MDOPSVT[NMVDOPSVU*R<B ]W6[67X9[:F-C"V]!Z1$05?[A$_<(B'K<7Z"1\ 
M5DJW<7Z"1\ 5DB1$1 1$0$1$!$1 1%A!E%B*(,HL11!E$1 1$0$1$!$1`1$0
M$1$!$1 1$0$1$!$1`1$0$1$!%K[UN/NXC%",,\%[096%E80<C751G322!S>:

M+<<#ATJ,*X3MS_J6_P!7HLRT+J5RNY_U;/ZO]I75+JZ?I_-W?Q_I_-Z1$6SH
M$1$!$1!5_N$3]PB(>MQ?H)'R!6!,%7[B_02/D" []>X.8TVM(,&Z3E=KL,;7

MS7Q<MZ(BLH+"*OJM[4]*<+G8G=%MO\/2IDM\(MPER:AD\$L,<)+3P$+:N-I=

M?:N<=O2IB>>0;Q8/1F4C?I/>M&:"J%Q=N]SQGIAS=W9>7&>F$WS6JVAY!J3S
M6JVAY!J4)%CRV^:PY[?NJ=YK4'\Y]6K2NIE6M!X(KB08+MI7P-X NCIMN<NK




MNJ?[IHYMC\4OYKO5%7<N8V:T/80YIM!%Q7RL`FY=Q]J?HH?SN]RY>[IUTG+5

MBF3+J)E5*E&#W '1&WD4=^])3?AB[B7/BH8+AEE[]#H
M3JOP3ZFI[]X>!A($%(IMY%G-FVCI:U3?5-A$6\(B1Z3!3J"7]7,A_P!;;7'V

M?1#J
M7B96=XTM`L=GC'/BT<GO5<'.>8,!<= $<N#EX%-9NBMF6A '"YW\3<G':IX;
MUNW('3*EKP#A$8N L^'3IX%UZA[NHF44H2VV&]UL;86J8NG6<9AUZ:\9AE81
M5.^ZJ;2R6.DNPDN 3 70.GA5I,W"UN/5;K"Y"5OZK9\1:X<+=2L:?[CENYL]
MIEGI"UNOU*]Z]I[*S>5?HO$M[9C0YA!:;B+E[6:ZK_<(G[A$0];C_02/D:HN
M^!*,Q >7XBUP T V1&G^&E2MQ?H)'R-4;?$Z2Q[1,EAY 3$N+86CE5=_IO\`
MEIU_5,9_)4N^GPWS2(&W"!_RA'V\,5U5/#NVX;L(A'B7)SIDJ9\$L,LMPS,6
M;\8#JW
MMY,W#FMQ,JW>F^73"95.8-N+QGXN#BM*I8PR!N]V5J-YU B2;+,K;5<4NX9T
MVV<1+!S0B[\%WRZ=4_'_`+<=FW9?P5!L,;;[?;;_``O74[CI7R)!<\GGG$&Z

M+IVS`WG0)$3UL.5JF;_,)[.%OO58RJ>& -) +AZ8Y:EY>\_76';/UW,]&\4E


M>USN]'8:IQ/1ECE+ET2 U6ZY-4YSWQBX-:8',(P]JUVG*8=,N*H6/$(&PV>[
M6O6-ND*V.XZ<DD%XCH?"Y8\BD=*9URN6]%^5N456-ND)C;I"M/(*<7.F==5L

MG93L$N6(-"W+JTUXSBI;FBK=^_H)WRY9>R]62K-_?_SYWRK37ZI_=5QM/,E_

MU6['4SGX780,,HQS1BW'ZHK8UU&+\&G\UW>=C-Q9U7TU.)TI\TQYD 0V%D0>
M<> 0ML]*E'=C1 XC`")L^/F8^9[,]O(J7C+B[5/JV?\`PVX0T-/-?\1=\0Q7


MWEJ[W[4,:*/\[O<LN^8T_O4Z^70(B+ :(F\9!J*:9*;:YS;.-4,O<-1,+R\M

MP0:,M%MBG2MT4DF$);21G=;[5J;O8?F81Q&.I;V[RDNO)'&-2B;Z7Q8>K?,D

M5\S.(A(6%E5U7O27231+F P+<6(<>B_DBK"-5?;U-/<9C8L>3$EIS\2CROM>
M4TQ?,<[B %:,WM2.L$UH^:SVP7IV\J5 MFLZP3",1[I:*12-P2&! X I"J:G
M?DAC?[7/=FL(;RZE0S:V?-)+YCN('".005IK:9=JBX(F-I)Y3K6QD^;+M:]X
MXG'^&7)/VZ9=PJ/[E.&0R/3'L*D;GK)E5+<)MI80,6G+ 5D]C7B#A$*L_3?[
M%F8^?K"[>9NVEFB#I3?0(*MJOMUCHFG<6G0ZT:_:NG7NGO&%ZZI]WU[Z%\6V
MRS\3/>.%=C(GLGRVS99BUP!!7#SZ
MLUEG/5;2V7C5A^X1/W"+F:O&Z9G=;ME/-S98/J52_>,Z9":^!'"T819Q1%^F



MR'"NG7.?1S[>/5*W3NL4K1,>/[I%O\O K5>)4ULUH>PQ:;05[46VW-3)B>CP

M1EMCIPB*BZYJEUEN7$TM%45A_M,,.DZ('KO]?ILA=R/MEL 9\PDZ&69<=ZZ(
M""%1-8321#H:"70L+)<8$QYQBIB+*LN(B("(B B( (B("B5]+]93S)$88VEL

M(0XB[.LXS9;=<OJ[J&G=\4IA_I"\>5TA,>Y9U K?[%^$8?*B\F\FV]9:"ZQH

MN=NZE$AYQ.B7&'#F5FLK


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
M+RM4MC-ZN<\!THP%HM#O5

M+GZ25-WDZ$QY$!BY]MCC"RX"[1<>3HJ>2V0P2VYM.6=1U^;?9;L\26_JGF)"
M(BU8"P3!97EUQ01J>OD5(C+>.*,#R*4OGX<TM&+UY9&Q>VS"/A)$=#C[LO4M
M>'Q49=VYX:(N('&JFOWRV5S*>#W&]U[1K/ #QKF"0;3 C/%9Q".6E3.OYIE8
M.WO5N_[(<31^*\C>E4/^T^G#J4+$,LLO4F*"OQGPA:R=^U$HQFP>W/9 Y97K

M-,&P8TC )SQMNYJQVVFLS5I,^%^^8U B\AHX5"F;TE"QD7>H*E,P.,7$DZ71
M]^5_"L=XT1)L`RR%ZY]N^_\`F+S1N=-)>7BPDQL4^EWA,<X,>,43".=50F!P
M+ "6B]P!P\JL]TRL49Y&EK>6WV>I4Z^?+X^2^%PN+F3 U[Q&YS]'2<NT7&3]
MUUIFO+99PE[B+0+SQ_BNZ,J\]_PY91]Z=^;H^S+*U>/*:[9'E&O\%GRFNV1Y


M6^JVQ8\IK=D>4:\KKD$T3F.A%P()C\0OP Z1^"\29[ XF($( 8CF =4/0HWE

MUAKRMMBGE-=LCRMUY#T0#UWYNCEEE> GF-ARR.42O/E-==W1A\PU\O!98$.Z


MVM/A/*N0J'3Z8!TYF &,+1FMAGOR"G[MHW5($V:/[?Y6G\W"<N46FUJJ&75E


MTTUC'![Q%H X?5 :+K 8"%ZYI+'H[;:V?U[+,UQ']PM($>ES?BQ:+\RQ]:6D
M1!LPWNT.Q:.3WK4VID%O=F#K6XX-/]PAI!AF#N.!SE>IDZG82US6EP+"]H;P

M%_(H\ZI89;V->'<]K 0S",/.]D1;G%L;BH37QL&;-"-WH% /%Z#S5%E^6FNV
MM];KZI1,+U]"E? WB"^9%]IM(-D8F!RO.89V])?397P-X M.J8RY_P"3MRX_
MAEL1$6KC$1$%7^X1/W"(AG<?Z"1\C5"WG5S1.[G% 99"&<$6YCQ0%N>"U2JB
M9(W;3"688FM!.>$(J(^IF%H<7ET3\#LT#GQ
MO_K72S/IFDRB6.<6NLT0M$760!(L-]FD+J**:^=):^8(.-_+E8N:#A,=&+66

M\P->8D 8'YQ?`POLCH4 /D3H/> TN<YIYUL`T0B,V(BVR'M5+B3$M//JAT-,
M93;&EHB68H/ 6\TX +;1& X;EI>9+VETQP+A+EP X=&#N
M+C!L2XYA> MJ1TILLDEL2V8UV(BSF\V''Z;="WS64P9!F XG,C%V:+ >&Z!/
M'& N5?+W56S+I+X:7 #VF*]NW+7-'^$GB+3[T"OP,?AEGFD9C&^_3GX?0N\E
M? WB"^<SZ>?3?Y9;F"-Y;9RW+Z-*^!O$%6W)%=OR274QFM$72B) XA?ZES<N
M1.FXF2&DEI#F
MP>OD !:4^YJ:1 AN)PSNM5DL)-9"VUJGR&SY;I3KG M69,ELEC9;+FB 6U%*
M!$1 1$0$1$!$1 1$0$1$!$1 1$0$1$!$1!A1:V DUK,$]N(7C,1Q%2UA!S$[
M[0E._P`4US1H< [VJ&[[1J6VLFL)TD0MTY_Q_,2NS11B+\]I[N'/VK6 \US.
M"W RT^W%Y'VM7FPE 'S$^T?Q_,3G[I$XP^YLXEOVI5F]\L<I]T?9RF*WR_L]


ML,51T6=9W947C[K3ECTSAI&ZZ;H#UJ5
MN[LI,>Q<^Z2BC8JGHLZ[NRF*IZ+.N[LJ4)*PH^*IZ+.N[LIBJ>BSK.[*"BJO
MM.5,>7R)AEQ_+"(]&=0G?:52+IK#PP
M^T)OYYS1\K3[SZ>-7F[-RR-W`ED7/( 7NO\`1H4O%4]%G7=V4Q5/19UW=E!)

MW94B2BC8JGHLZ[NRF*IZ+.N[LJ!)11L53T6==W93%4]%G7=V4$E%&Q5/19UW
M=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)11L53T6==W93%4]%G7=V4$E%
M&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)11L53T6==W93%4]%
MG7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)11L53T6=
M=W93%4]%G7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)
M11L53T6==W93%4]%G7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/
M19UW=E!)11L53T6==W93%4]%G7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%

`
end
Nov 25 2004