Thanks for your reply.

1. While this extension looks similar to the DS extension, there are several 
notable differences:


* The DS extension implements its own data structures, while this extension 
uses just `zend_array`. It's much cheaper when you're "converting" a PHP array 
into a `Collection`, and vice versa. It just increments the refcount, without 
having to iterate through the array and copy its elements.
* This extension has much more methods(mostly ported from kotlin.collections) 
than the DS extension, which can minimize userland business logic operating the 
array.


2. See this 
[gist](https://gist.github.com/CismonX/0bfa2bd6f2b257e5d4a49afa635819fe) for 
some simple performance comparison.


* If the userland implementation is doing the same thing as the extension(also 
uses callbacks), the performance increase is satisfactory. For `associate()`, 
it provides a 19% speed boost.
* However, if you're not using callbacks, the userland implementation can be 
faster. That doesn't mean functions like `array_map()`, `array_filter()` are 
useless, though.
* In some cases, there's no way to implement some functionalities cheaply in 
userland PHP, such as `sortBy()`. It provides a 500% speed boost in comparison 
with the `usort()` workaround.


3. Good suggestion. I'll have the `Collection` class implement the `Iterator` 
interface.
 
 
------------------ Original ------------------
From:  "Arnold Daniels"<arn...@jasny.net>;
Date:  Mon, Sep 10, 2018 06:13 PM
To:  "CismonX"<ad...@cismon.net>; 
Cc:  "pecl-dev"<pecl-dev@lists.php.net>; 
Subject:  Re: [PECL-DEV] Publishing a new PHP extension to PECL

 
Some critique, sorry...


* This seems comparable to the DS extension; http://php.net/ds. Why not discuss 
and/or collaborate? I feel having too many similar extensions is not good.* I 
wonder how much this will perform than a userspace implementation for most 
methods, as they use callbacks.

* For cases where it's not required to have ArrayAccess, but just traverse 
through the items, it would be preferable if the Collection is just iterable 
(functions similar to a Generator), so the methods form a pipeline.


- Arnold


On Sat, Sep 8, 2018 at 3:14 PM CismonX <ad...@cismon.net> wrote:

Hello,
 
 I'm a student in Tianjin University and a part-time web developer.
 I'd like to publish one of my extension to PECL, so that it can help more 
people in their projects.
 
 https://github.com/CismonX/ext-collections
 
 This extension can serve as a faster, more scalable and object-oriented 
alternative of ext/standard/array.c, which supports all versions of 
PHP(ZTS/NTS) starting from 7.1 on any platform.
 See README.md for details.
 
 Now this extension is fully implemented and well-tested, and is not far from 
going production.
 I believe now is the time to publish it to PECL.
 
 Looking forward to your response!
 
 CismonX
 9/8/2018
 -- 
 PECL development discussion Mailing List (http://pecl.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to