Re: Benchmark of new VM

From: Date: Mon, 27 Sep 2004 14:43:20 +0000
Subject: Re: Benchmark of new VM
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-13010@lists.php.net to get a copy of this message
On 2004-09-26 15:46:06 +0200, Thies C. Arntzen <thies@thieso.net> said:
On 2004-09-26 03:05:18 +0200, Andi Gutmans <andi@zend.com> said:
I'll see which parts of your patch can be adapted for 5.1.x. I think the var lookup is probably the most substantial one but I will probably implement it slightly different. I'll mail internals@ when I have something.
this needs to get fixed in the compiler. (which sterling and i didn't want to touch) to make things good - we should always fetch the same variable into the same register (in the compiler). that way we could check if the register is already "loaded" and only fetch from the symbol-table if not. unless i'm missing something this should be relativly easy and it would work better (gain us more speed) than the hack sterly and i did. for real register-reuse we would have to do some basic flow-analysis, which i believe is too much science for PHP... re, tc
here we go - the worst hack ever (against php4 as i don't fully understand the new executor) (currently no support for functions calls;-) what it does: it remembers simple variable-fetches in the compiler and always fetches the same var into the same register. (hackish as i added a new field to the zend_op). in the executor we cache those lookups into a global array (hence no functioan call support) called "tubu". what are the benefits? - we save on temps as the same var is always fetches into the same temp - we save a most hash-lookups for simple var acesses (loops etc) is this the way to go andi? tc begin 644 worst_hack_ever.txt.bz2 M0EIH.3%!62936?Q\S8V_?@$P>7__^__OWUJ_[]_Z8?_>%IIH&A6@T` M`+"4U")J:#UVB-!HT&F:09T#0:T](,<PC":8A@$R`&$:9,F$8"&AP# M",)IB&0#(81IDR81@(:#3TD$D])/4>4](,@:>H:-&3":````,AP#",)IB& M0#(81IDR81@(:"1(("9!-,F@!-#11^BFTAZC:>E'BCU&C;4U&D"8L1&1RR MD,K,:DG)1`-J414/[?!-LK02K9LD0A,"6Q2FVG!HHTIHVF@;@(!3+D&P4\JR M"%2FV2I9-*,5"&)"(5Q+F%0J5G1SY!TBUF"!0(G!J[<(NTG9H@?7ZW4VJ^3= MRJ5B1GS@>^GYTYE=]#4U\*76XEJUZ]?V"J7*;6A$#2&)IBX"P^+4T?3?J[ M0MISL54@FK0LO:#*G&WNX*/L4CR*(?,W&M]-,5IYTY=R#R#,/(.L,=876R7Z MA`H/OQ)5/VWOKB?'RQ*04FR%O(7/OFCW7;X6YQB9"I"GF,+/0YBK#-7BU;#; M;8W.=<#[\='Y):UM.*B5EF',[XH1=*U[LXVULD7=I`O7N[-WFT;[=<@SPC MTL(DI>=,"H/TM_@*$QBVZE;CTE/$F''5_7VHJ,<X(L"(7Y4+56#E$"C3::(+ M,[306V/X<<I+%3?(*QGPL*,X-BT$F1V/(A:[,K])*SPU2U5?R^LW,OV6>_6; M>9H7.02D+J$(]8#19)!Q'I)9Z"-$O=QT.0^%'QR&KZ6P62F2O4EX?B>JX[XX M/U2)TE3A;W^8>T1[&'&@.S5L;8P:;&DT,8$@6A?P6A8J0M"S3334+G_N$- M(9M&VV_M$8KL9(7Q)*X&(FF*Q'XC1=U=GAV,.(.((6]IM-I[->W.J-NU5- MP*J2O%N.*A$2IXA!-UW:ZT\ZB3JLU]+;;;;XO^Y7-RH:#XJ`@Q3--,*&B!U+ M$$!2@%USQ*J4(TWNW0&6)U+&V]889(PR#25&7@3)88#4*2:=E*I9E]_<3+30 MD]))6V6-Q5%Z+:Z+B*1.DQT<U;;Y^</N%@7#,>[2&,6>9>?JC=ZZ:IF]R++I M>EZ<FW7412S'5E[55<-'+BZQ?=S3<%AKWFG5[!'N%#!B"8T=X2`HP;Y4D#"2 M_(0400@^ARMBH8W+@8Y"/L7X09&1_2QX-.FZ@I%(LA*SJ`FS-Y\-/'!Y!I_X M$M*VF(8U%H;:(E`4%D8(TFX*&0>\+S:'C@C[(H8(PL#['&>Z:OP%B8',,PR# M,V(D5"+=2HC+67''B&D;625Y^MH8DCE**?B*),^#6170&A\"%B7JP/(?4#!> M*]H_W!WO%+S!Y!M,#H*&]Z#UW>U$>(AY^@I[(HQH_2L>U;32;:O@N"81@G"R M%L!KVN'%2"A8*R!.LFTY#NPK\YJ[<K%(/I9@,9:X/D#5$'S;V"80VB]G8' M08[$EFQ??[I0E($:\BX":SA0@5R-@8\HK$;#ZW!=GW>R]&]+KY1L5BD'N` MXZP0%G%K]&@#!6\V5@<+4C`"^T,=&X1D*X$M3$;!H1.\,+BY9"K]QAGX!!JQ MO,M'+-0EH1Q$G`9NE+BL2+H"BLA.@5L:)#28$ZMMMML-SS$T.E)#(A4'NL@E M"X!1()_,1?M$Q@&>I.EPAK)G>@/_($3ORNFNU*`L;F1<Q!XH6E*$+D!A<L@J MD95J@8;U/D]^_FYE2U%P04B#<,BP<26*&AM&A3%-MV0E-6@=31RB($W-)PK; M4MJ,A0'0!^VM$N01L`;U8\72IK<D!S!;45^!SN-NH-):'M4[TNC8CRM"T&MJ MY1(XU!D>82W,X"31OE(IPX*04$!IT[6,6/(E*6,TKE`@O4DI>=0((8Q:3-(@ M&&ID+?D16)""1<2"$A+V!0DA!OSYKII%G7,)@32G8]V@U(-,D376Y32+15 M@#8K>$#&T9$(>Z2RZ6=(V?HBL=$,FP.)DBMZY0K`0'AW'1N-J7:0/:=,A)C1 M#4D/FZ4*))%\"@+_CHXQ)<8S/F0P+6-@B!K\P@(&*V<@8=2.RGF%!N?R6/ M")<A+D+O<&W?,YP#U!B2+FS<PS$:@U.^22'Q2F$PZ?WZJ;8E'7`F'@R"4WA. MUC2(+^T,EN>V85M<)L+#NKRBK.D"#9)8V8C%52B<UTAB9(G*BJ%<KK!4 M$;+G%EB6NU@>E97N\.^NP+#B#A;(LY%B&X$LA,600N@-.>K#18!Q8C:9-1T! M(Y0&A=8<FP.3D$8S'I$'3GC:9]K$;S^@:^]5;-*80E`K6E<MD(D!HXJ2:H!( MEN"X"@5KM#3JJD&0M@$UDA=9:P!(%S)XDH$/&*$)BDRP*-=1,*&H%N-.RB[D (BG"A(?CYFP ` end

« previous php.internals (#13010) next »