Re: Phux - High Performance PHP Router
| From: | Yo-An lin | Date: | Tue, 07 Jan 2014 12:01:10 +0000 |
| Subject: | Re: Phux - High Performance PHP Router | ||
| References: | 1 2 3 4 5 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-322644@lists.php.net to get a copy of this message | ||
https://github.com/c9s/router-benchmark/blob/master/code/dispatch.txt
Pure Dispatching Benchmark.
I use LAP environment to test because the result is more practical for production environment.
[Sent from iPhone]
> Sebastian Krebs <krebs.seb@gmail.com> 於 2014/1/7 17:44 寫道:
>
>
>
>
> 2014/1/6 Yo-An Lin <cornelius.howl@gmail.com>
>> Here is the benchmark details, you can find the benchmark code below:
>>
>> https://github.com/c9s/router-benchmark
>
> Hi,
>
> Well, you still use a full LAMP-stack and HTTP-benchmark-tool for benchmarking. That was
> actually _the_ point, which makes this benchmark useless for me...
>
>
> Beside this: You should increase the routes you benchmark and introduce more variation
> (pattern-matching, matching first/last route and so on), because different implementations often
> differ in different situations.
>
>>
>> on intel xeon 16 cores machine:
>>
>> symfony/routing only got 4873.17 #/sec while phux got 16777.12 #/sec
>>
>> on intel core i5 machine:
>>
>> symfony/routing only got around 200-300 #/sec while phux got around 1600-1800 #/sec
>>
>>
>>
>> Also the pure php dispatch benchmark:
>>
>> cat dispatch.txt
>> n=10000
>> Runing symfony/routing - . 6664.4093423989/s
>> Runing phux extension - . 16501.898328291/s
>>
>> Rate Mem phux extension symfony/routing
>> phux extension 16K/s 5M -- -40%
>> symfony/routing 6K/s 786K 247% --
>>
>>
>> ================================== Bar Chart ==================================
>>
>> phux extension 16K/s |
>> ████████████████████████████████████████████████████████████
>> |
>> symfony/routing 6K/s |
>> ████████████████████████ |
>>
>>
>> ============================== System Information ==============================
>>
>> PHP Version: 5.5.6
>> CPU Brand String: Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz
>>
>>
>>
>>
>>
>>
>>> On 2014/1/6, at 下午12:36, Yo-An lin <cornelius.howl@gmail.com> wrote:
>>>
>>> Yeah I know, the benchmark is pretty rough. Because its a two day work. :p
>>>
>>> The details will come up later.
>>>
>>> [Sent from iPhone]
>>>
>>>> Sebastian Krebs <krebs.seb@gmail.com> 於 2014/1/6 7:54 寫道:
>>>>
>>>>
>>>>
>>>>
>>>> 2014/1/5 Lin Yo-An <cornelius.howl@gmail.com>
>>>>> Hi folks,
>>>>>
>>>>>
>>>>> Glad to announce that the first version of Phux PHP Router is released..
>>>>>
>>>>> https://github.com/c9s/phux
>>>>>
>>>>>
>>>>> Phux is basically a rewrite of PHP Roller router.
>>>>>
>>>>> Phux provides full functional C extension and pure PHP library with the
>>>>> same interface, so the extension is optional to install.
>>>>>
>>>>> but if you install phux extension, you may enjoy the performance of routing.
>>>>>
>>>>>
>>>>>
>>>>> Route Dispatch Benchmark (Symfony/Routing and Phux pure PHP)
>>>>>
>>>>>
>>>>> https://raw.github.com/c9s/Phux/master/benchmarks/reqs.png
>>>>
>>>> Hi,
>>>>
>>>> Not a comment about Phux directly, but I think I have to point this out (sadly:
>>>> once more): When you use Apache Benchmark to benchmark the performance of an PHP-component, you in
>>>> fact benchmark your system... [1] Another flaw is, that the whole benchmark setup is missing, which
>>>> makes it slightly suspicious and unreliable. Two things, that spontanous came into my mind
>>>>
>>>> - Because you use ab to benchmark it is unlikely, that the S2-setup contains the
>>>> routing-component only. This means, that in this benchmark you measure more than just the routing.
>>>> OK, the README states, that "Testing with route dispatch only. (no controller)", but
>>>> information on how do the benchmarks setup the routing is missing.
>>>> - Like so many other benchmarks improvments, that every S2-application relies in
>>>> production on, are probably missing. Do you compile the routing-table from a config into PHP? Do you
>>>> use APC? While it sounds totally fair to compare two bare setups, it isn't. It probably ignores
>>>> customizations, that are possible in one, but not the other and that affects the outcome. Most
>>>> obvious example is what I mentioned: Parsing a YAML, generating the routing table and routing is
>>>> something very different than reading the routing-table from an APC-cached PHP-file and routing.
>>>>
>>>> I don't say Phux is bad or something, but my advice is to rework the benchmark
>>>> and publish the setup. Beside this I am more interested in benchmarks of the C-extension (especially
>>>> against the native-PHP solution) :)
>>>>
>>>> Regards,
>>>> Sebastian
>>>>
>>>>
>>>> [1] The worst thing about this, is that you not only benchmark the target system,
>>>> but the benchmark also relies heavily on the local one. Even worse than worse: Running both on the
>>>> same machine let them affect each other in a non-predictable way. You get numbers, but you can never
>>>> tell, what they mean.
>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Yo-An Lin
>>>>
>>>>
>>>>
>>>> --
>>>> github.com/KingCrunch
>
>
>
> --
> github.com/KingCrunch