Hi,
A quick sketch of an idea that should work:
Yes, that would work. The problem though, is that there's still accumulation of data going on, before the actual sorting can take place. Remember that the main reason for writing the C-extension was to get the memory usage down.

Here's some benchmarks that I just did between the multisort solution and the extension (time / memory). I commented out the efree() calls in the extension so see the actual memory usage in these benchmarks:

10 nodes
extension 4.19616699219E-05 / 756
multisort 0.000128984451294 / 3916
100 nodes
extension 0.000138998031616 / 5444
multisort 0.000992059707642 / 32536
1000 nodes
extension 0.00320601463318 / 52276
multisort 0.0115978717804 / 320988
5000 nodes
extension 0.127704143524 / 260356
multisort 0.0901730060577 / 1594448
10000 nodes
extension 0.438856840134 / 520308
multisort 0.172026872635 / 3196832

As you can see, the extension is faster and lighter on memory. At a really large number of nodes, the extension becomes slower, but the memory stays low. It's the memory that bothers my servers the most, not the execution time.

With kind regards,

Maurice Makaay
Phorum.org

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to