On 05/04/11 04:47, Tim Starling wrote:
 > Speaking of "fast", I did a quick benchmark of the [[Barack Obama]]
 > article with templates pre-expanded. It took 22 seconds in HipHop and
 > 112 seconds in Zend, which is not bad, for a first attempt. I reckon
 > it would do better if a few of the regular expressions were replaced
 > with tight loops.
<snip>
I have imported in my local wiki the english [[Barack Obama]] article 
with all its dependencies. I can not have it parsed under either 256MB 
max memory or 1 minute max execution time limits.
Hiphop helps, but there is still a highly broken code somewhere in our 
PHP source code.  No matter how much hacks we throw at bad code, the 
algorithm still need to get fixed.

> Also, browsing the generated source turns up silly things like:
>
> if (equal(switch2, (NAMSTR(s_ss34c5c84c, "currentmonth"))))
>       goto case_2_0;
> if (equal(switch2, (NAMSTR(s_ss55b88086, "currentmonth1"))))
>       goto case_2_1;
<snip>
> 71 string comparisons in total, in quite a hot function. A hashtable
> would probably be better.

As I understand it, hiphop is just a straight translator from PHP to C 
language but does not actually enhance the code. Just like you would use 
Google translator instead of Charles Baudelaire [1].

Your code above comes from Parse.php getVariableValue() which use a long 
switch() structure to map a string to a method call. If you manage to 
find unoptimized code in the translated code, fix it in the PHP source 
code :-b

[1] French poet, probably best known in UK/US for his work on 
translating Edgar Allan Poe novels from English to French.

-- 
Ashar Voultoiz


_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to