<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-09-23 18:49 GMT+02:00 Hugues Peccatte <span dir="ltr"><<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">2014-09-23 16:23 GMT+02:00 Marc Delisle <span dir="ltr"><<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hugues Peccatte a écrit :<br>
<div><div>> 2014-09-22 21:08 GMT+02:00 Hugues Peccatte <<a href="mailto:hugues.peccatte@gmail.com" target="_blank">hugues.peccatte@gmail.com</a>>:<br>
><br>
>> 2014-09-22 18:44 GMT+02:00 Marc Delisle <<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>>:<br>
>>> Hugues,<br>
>>> do you still have the branch where each commit was separate, before<br>
>>> squashing?<br>
>>> --<br>
>>> Marc Delisle (phpMyAdmin)<br>
>>><br>
>> With "git reflog", I've been able to get it back:<br>
>> git checkout -b memory 972e038<br>
>><br>
>> What do you have in mind?<br>
>><br>
>> Hugues.<br>
>><br>
><br>
> I did a simple test:<br>
> * run substr 100000 times<br>
> * run $obj->substr 100000 times (where $obj->substr simply calls substr)<br>
><br>
> The second one is 3 times longer than the first one. The simple fact to use<br>
> an object is too long.<br>
> I tried something else: overwrite the functions. It's better: 2 times<br>
> longer that the first one, but still slower…<br>
><br>
> That means that importing your file would take ~24 seconds instead of ~12<br>
> seconds.<br>
><br>
> Should we think about defining "pmaSubstr", "pmaStrlen", etc functions and<br>
> use it everywhere?<br>
<br>
</div></div>Do you mean using functions without objects?<br>
<div><div><br>
--<br>
Marc Delisle (phpMyAdmin)</div></div></blockquote><div><br></div></div></div><div>That's it. Instead of using $pmaString->strlen or strlen, we could imagine to use pmaStrlen and this function would call strlen or mb_strlen if mb_* functions exist. </div><div>Another way could be to overwrite strlen with mb_strlen, but we wouldn't be able to use the original strlen if needed. So I think that we should define new functions.</div><div><br></div><div>I'll try to do a mass replacement and check if the execution time is better.</div><span class=""><font color="#888888"><div><br></div><div>Hugues.</div></font></span></div></div></div>
</blockquote></div><br></div><div class="gmail_extra">I had a better execution time with functions instead of objects [1].</div><div class="gmail_extra">My server is configured to have a maximum execution time of 300 seconds/5 minutes. And I wasn't able to import all the Marc's SQL file.</div><div class="gmail_extra">But now, I can import the whole file into 3.5 minutes. We're still far of the ~12 seconds, but this is better…</div><div class="gmail_extra"><br></div><div class="gmail_extra">Two other ideas to improve it again:</div><div class="gmail_extra">* Use runkit [2], but it would add a dependency, so I'm not really for this solution</div><div class="gmail_extra">* In PHP ≥ 5.6, we'll be able to use this feature [3]</div><div class="gmail_extra"><br></div><div class="gmail_extra">So maybe I'll try to look for the slower part and try to improve it…</div><div class="gmail_extra">I'll also try to find the commit which slows the script, as suggested by Marc. But this could be hard, because the commits between the first one and the last one are not really stables…</div><div class="gmail_extra"><br></div><div class="gmail_extra">If anyone has another idea…</div><div class="gmail_extra">Thanks,</div><div class="gmail_extra"><br></div><div class="gmail_extra">[1] <a href="https://github.com/Tithugues/phpmyadmin/tree/stringFunctions_master">https://github.com/Tithugues/phpmyadmin/tree/stringFunctions_master</a></div><div class="gmail_extra">[2] <a href="http://php.net/manual/en/function.runkit-function-copy.php">http://php.net/manual/en/function.runkit-function-copy.php</a></div><div class="gmail_extra">[3] <a href="http://php.net/manual/en/language.namespaces.importing.php">http://php.net/manual/en/language.namespaces.importing.php</a></div><div class="gmail_extra"><br></div><div class="gmail_extra">Hugues.</div></div>