-
-
Notifications
You must be signed in to change notification settings - Fork 0
Comparison
Сравнение CloudCastle Collection с аналогами. Таблица возможностей генерируется из
tools/features-data.php (composer docs:features), числовые бенчмарки —
из composer compare (composer docs:comparison).
Заглушка для дальнейшей разработки: наполните
tools/features-data.phpреальными возможностями и аналогами, аbenchmark_collect()— реальными операциями пакета.
Сгенерировано из tools/features-data.php (факты о поддержке). Легенда: ✅ полностью ·
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| make / wrap из любых источников (iterable, Arrayable, скаляр, null) | ✅ | ✅ | ✅ | Паритет | ||
| times / range (генерация) | ✅ | ✅ | ❌ | ❌ | ✅ | Паритет |
| fromJson с fail-safe валидацией (исключение, лимит глубины) | ✅ | ❌ | ❌ | ❌ | Collection |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| first / last / get с default и предикатом | ✅ | ✅ | ✅ | Паритет | ||
| firstOrFail / sole (контрактные исключения) | ✅ | ✅ | ❌ | ❌ | Collection, illuminate | |
| search строгий по умолчанию | ✅ | ✅ | ❌ | Collection |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| map / mapWithKeys / flatMap / pluck | ✅ | ✅ | ✅ | Паритет | ||
| where-семейство (In / Between / Null / InstanceOf) | ✅ | ✅ | Collection, illuminate | |||
| unique типобезопасный (1 ≠ '1' ≠ true) | ✅ | ❌ | ❌ | Collection | ||
| Строковый callable в map не получает ключ (нет ловушки intval) | ✅ | ❌ | — | — | ❌ | Collection |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| sum / avg / min / max по полю | ✅ | ✅ | ❌ | ✅ | Паритет | |
| median / mode | ✅ | ✅ | ❌ | ❌ | Collection, illuminate | |
| Числовые строки без потери типа и точности | ✅ | — | — | Collection |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| groupBy / keyBy / countBy | ✅ | ✅ | ❌ | ✅ | Паритет | |
| chunk / split / partition (вложенные коллекции) | ✅ | ✅ | ❌ | Collection, illuminate |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| merge / union / combine / concat / zip / crossJoin | ✅ | ✅ | ❌ | ✅ | Паритет | |
| diff / intersect со строгим сравнением | ✅ | — | Collection |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| Строгие сравнения по умолчанию (анти type juggling) | ✅ | ❌ | Collection | |||
| Строка из данных никогда не вызывается как функция | ✅ | — | — | Collection | ||
| toJson бросает исключение вместо тихого false | ✅ | — | ❌ | Collection | ||
| Zero runtime-зависимостей | ✅ | ❌ | ✅ | Collection, aimeos |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| C-fast-path для замыканий без ключа (map / filter / reduce) | ✅ | ❌ | ❌ | ❌ | Collection | |
| array_column-путь для pluck / sum по полю | ✅ | ❌ | — | ✅ | ✅ | Collection, ramsey, aimeos |
| Schwartzian-сортировка sortBy (n вызовов вместо n·log n) | ✅ | ✅ | — | ❌ | ❌ | Collection, illuminate |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| Нагрузочные тесты в CI (100k элементов, бюджет памяти) | ✅ | ❌ | ❌ | ❌ | ❌ | Collection |
| Перф-бюджеты всех групп методов в CI | ✅ | ❌ | ❌ | ❌ | ❌ | Collection |
| Мутационное тестирование (MSI 100%) | ✅ | ❌ | ❌ | ❌ | ❌ | Collection |
| Функция | Collection | illuminate | doctrine | ramsey | aimeos | 🏆 Победитель |
|---|---|---|---|---|---|---|
| Наследование с protected-хелперами (контракт зафиксирован тестами) | ✅ | ✅ | Collection, ramsey | |||
| ArrayAccess + Countable + IteratorAggregate + JsonSerializable | ✅ | ✅ | ✅ | Паритет |
Сгенерировано из composer compare (PHP 8.1.34). Правки в блоке будут перезаписаны.
| Сценарий | cloudcastle/collection | illuminate/collections | doctrine/collections | ramsey/collection | aimeos/map | loophp/collection | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| Создание из массива (100 эл.) | 10485760 ops/s | 7741425 ops/s | 10776732 ops/s | 58189 ops/s | 7309697 ops/s | 162882 ops/s | doctrine/collections |
| map (×100) | 217592 ops/s | 149494 ops/s | 229928 ops/s | 26438 ops/s | 147828 ops/s | 51155 ops/s | doctrine/collections |
| filter (×100) | 144179 ops/s | 124079 ops/s | 124960 ops/s | 42030 ops/s | 121987 ops/s | 15715 ops/s | cloudcastle/collection |
| where поле=значение (×100 структур) | 87912 ops/s | 11315 ops/s | — | 31897 ops/s | 42288 ops/s | — | cloudcastle/collection |
| pluck поля из структур (×100) | 1220339 ops/s | 40254 ops/s | — | 41788 ops/s | 889830 ops/s | — | cloudcastle/collection |
| groupBy полю (×100 структур) | 75158 ops/s | 18844 ops/s | — | — | 69605 ops/s | — | cloudcastle/collection |
| sum по полю (×100 структур) | 329316 ops/s | 25386 ops/s | — | — | 223732 ops/s | — | cloudcastle/collection |
| sortBy полю (×100 структур) | 66873 ops/s | 27390 ops/s | — | — | 33674 ops/s | — | cloudcastle/collection |
| unique (×100) | 321772 ops/s | 317399 ops/s | — | — | 297937 ops/s | — | cloudcastle/collection |
| contains строгий (×100) | 4930995 ops/s | 2927348 ops/s | 5092647 ops/s | 59065 ops/s | 2955400 ops/s | 8104 ops/s | doctrine/collections |
| merge двух наборов (100 + 100) | 1583832 ops/s | 1468902 ops/s | — | 17919 ops/s | 1465003 ops/s | — | cloudcastle/collection |
| chunk по 10 (×100) | 474877 ops/s | 431406 ops/s | — | — | 304359 ops/s | — | cloudcastle/collection |
| first по предикату (×100) | 215899 ops/s | 208100 ops/s | 133213 ops/s | — | 201102 ops/s | 15780 ops/s | cloudcastle/collection |
| reduce суммой (×100) | 204616 ops/s | 102043 ops/s | 207366 ops/s | 45738 ops/s | 200650 ops/s | 36209 ops/s | doctrine/collections |
| JSON-цикл (encode + decode, ×100) | 142195 ops/s | 93062 ops/s | — | — | 152560 ops/s | — | aimeos/map |
CloudCastle Collection · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)