Le 2014-09-20 14:16, Hugues Peccatte a écrit :
Hi everyone,
It seems that since that commit [1], the master is quite slow to import data. This seems to be linked to multi-bytes functions that are really slower compared to standard string functions.
I tried several variants of this, but without a good result: instead of always using PMA_StringMB, try to detect encoding and so use PMA_StringNative when possible. To improve this, I cached the encoding, to avoid to detect it each time. See [2] (this is not totally safe, here, for the tests, I removed the mb_* detection). But the result is not as good as before… I also tried something more experimental: convert all the strings used in PMA_String to UTF-8 string and so, mb_* functions won't convert anymore. But it is not effective either.
Do you have any idea about the way to improve it please? I thought about generalising the strpos to a strallpos/strposall (for redundant strpos) with an explicit encoding, not to let PHP convert each time.
Thanks for your help,
[1] https://github.com/phpmyadmin/phpmyadmin/commit/9b77d746aba [2] https://github.com/Tithugues/phpmyadmin/commit/ab6f493449d90e58bd4caa15740d8...
Hugues.
Hi Hugues,
I have not looked deep into this logic, so it seems that you've become the expert here in these matters.
Taking into account that the current master is not acceptable for a 4.3.0-alpha release, I see a few choices:
- remove the mb modifications from the import logic
- remove the current parser from the import logic, therefore removing support for things like a custom delimiter and probably other things (import of compressed files?)
- delay 4.3.0 until we find the correct solution with mb