<div dir="ltr"><div><div class="gmail_extra"><div class="gmail_quote">On Wed, Sep 24, 2014 at 5:54 PM, Madhura Jayaratne <span dir="ltr"><<a href="mailto:madhura.cj@gmail.com" target="_blank">madhura.cj@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Wed, Sep 24, 2014 at 5:35 PM, Marc Delisle <span dir="ltr"><<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>></span> wrote:<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">Chirayu Chiripal a écrit :<br>
<div><div>> Hi,<br>
><br>
> On Wed, Sep 24, 2014 at 5:13 PM, Marc Delisle <<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>> wrote:<br>
><br>
>> Hugues Peccatte a écrit :<br>
>>> 2014-09-23 20:04 GMT+02:00 Marc Delisle <<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>>:<br>
>>><br>
>>>> Hugues Peccatte a écrit :<br>
>>>>> 2014-09-23 16:23 GMT+02:00 Marc Delisle <<a href="mailto:marc@infomarc.info" target="_blank">marc@infomarc.info</a>>:<br>
>>>>><br>
>>>>> That's it. Instead of using $pmaString->strlen or strlen, we could<br>
>>>> imagine<br>
>>>>> to use pmaStrlen and this function would call strlen or mb_strlen if<br>
>> mb_*<br>
>>>>> functions exist.<br>
>>>>> Another way could be to overwrite strlen with mb_strlen, but we<br>
>> wouldn't<br>
>>>> be<br>
>>>>> able to use the original strlen if needed. So I think that we should<br>
>>>> define<br>
>>>>> new functions.<br>
>>>> What I don't like is that we would have two different syntaxes to call<br>
>>>> string functions. We would need comments in the calling code to explain<br>
>>>> why we are using a way and not another way.<br>
>>>><br>
>>>>> I'll try to do a mass replacement and check if the execution time is<br>
>>>> better.<br>
>>>>> Hugues.<br>
>>>> --<br>
>>>> Marc Delisle (phpMyAdmin)<br>
>>>><br>
>>> If by "two ways", you think about PMA_String and pmaStr* functions, there<br>
>>> should be a misunderstanding. I don't want to keep PMA_String (at least,<br>
>>> not for string functions), I'd like to migrate it into functions. Here, I<br>
>>> kept it not to break anything, just to check performance.<br>
>>> If you think about pmaStr* functions and standard PHP functions, I don't<br>
>>> think this is a real issue, because we use PMA string object almost<br>
>>> everywhere today, so it would be replaced by function calls.<br>
>>><br>
>>> Hugues.<br>
>> I believe it's a good idea to use just functions, but other developers<br>
>> might think otherwise.<br>
>><br>
><br>
> In that case, how will function decide whether to use mb_* function or<br>
> simple one? What if we use static methods?<br>
<br>
</div></div>In the current implementation, the mb_* functions are preferred; so we<br>
would use the same priority, to define functions like PMA_substr().<br>
<div><div><br></div></div></blockquote><div> </div></div></div><div>For what it's worth I did some profiling of the import functionality and here is what I observed.</div><div><br></div><div>If we consider the substring functionality</div><div><br></div><div>Using the native functions wrapped in OOP function calls,</div><div>php::substr took 0.34 micro secs on average (2.7ms for 8308 calls)</div><div>PMA_StringNative->substr took 13.26 micro secs on average (110ms for 8295 calls)</div><div>PMS_String->substr took 28.93 micro secs on average (244ms for 8294 calls)</div><div><br></div><div>Using the mb functions wrapped in OOP function calls,</div><div>php::mb_substr took 22 micro secs on average (220ms for 9700 calls)</div><div><div>PMA_StringMB->substr took 120.54 micro secs on average (1170ms for 9706 calls)</div><div>PMS_String->substr took 115.50 micro secs on average (958ms for 8294 calls)</div></div><div><br></div></div><div>So it seems like both factors (using mb functions as well as object orientation) are responsible for the slowness. </div><div><br></div><div>See the attached screenshots too.</div></div></div></blockquote><div><br></div><div>I was just wondering what will be the effect if we make current methods as static in those classes?<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class="HOEnZb"><font color="#888888"><div class="gmail_extra"><br></div>-- <br>Thanks and Regards,<div><br></div><div>Madhura Jayaratne<br><div><br></div></div>
</font></span></div></div>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr">Regards,<br>Chirayu Chiripal<br><a href="https://chirayuchiripal.wordpress.com/" target="_blank">https://chirayuchiripal.wordpress.com/</a><br></div>
</div></div></div>