PHPackages                             avadim/fast-excel-benchmark - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. avadim/fast-excel-benchmark

ActiveProject[Utility &amp; Helpers](/categories/utility)

avadim/fast-excel-benchmark
===========================

Benchmark suite for XLSX write/read: FastExcelWriter/FastExcelReader vs PhpSpreadsheet vs OpenSpout

00PHP

Since Feb 15Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/aVadim483/fast-excel-benchmark)[ Packagist](https://packagist.org/packages/avadim/fast-excel-benchmark)[ RSS](/packages/avadim-fast-excel-benchmark/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

XLSX Benchmark
==============

[](#xlsx-benchmark)

FastExcelWriter vs PhpSpreadsheet vs OpenSpout

This repository contains a benchmark suite to compare **XLSX write and read performance** between:

- avadim/fast-excel-writer
- avadim/fast-excel-reader
- phpoffice/phpspreadsheet
- openspout/openspout

It measures:

- Execution time (ms)
- Peak memory usage (MB)
- Speed (cells/sec, rows/sec)
- Relative speed (% vs baseline)

Results are stored in `/results/*.jsonl` and can be viewed:

- In console (report.php)
- As Markdown report
- In browser (public/index.php) with interactive charts

---

🇬🇧 ENGLISH
==========

[](#-english)

1. Installation
---------------

[](#1-installation)

Install dependencies via Composer:

```
composer require avadim/fast-excel-benchmark

```

The `/results` and `/tmp` directories will be created automatically if needed.

---

2. Running the benchmark
------------------------

[](#2-running-the-benchmark)

Main command:

```
php console/bench.php

```

Optional parameters:

```
php console/bench.php --out=run1.jsonl
php console/bench.php --phpss-cache=none
php console/bench.php --phpss-cache=memory
php console/bench.php --phpss-cache=memory_gzip
php console/bench.php --phpss-cache=discISAM

```

What happens:

1. WRITE benchmarks are executed for multiple table sizes (rows × columns).
2. XLSX files are generated using each library.
3. READ benchmarks are executed using files created by FastExcelWriter.
4. All results are appended to `/results/.jsonl`.

Each line of the `.jsonl` file is a separate JSON record.

---

3. Console report
-----------------

[](#3-console-report)

Print formatted summary in terminal:

```
php console/report.php

```

Or:

```
php console/report.php --in=run1.jsonl
php console/report.php --md=report.md
php console/report.php --in=run1.jsonl --md=report.md

```

Markdown reports are saved to `/results/`.

---

4. Web UI with charts
---------------------

[](#4-web-ui-with-charts)

Open in browser:

```
http://localhost/public/

```

Features:

- Interactive charts (Chart.js)
- Linear / logarithmic Y scale toggle
- Relative speed graph (× baseline)
- Export charts as PNG or SVG
- Relative speed (%) in tables
- Hide empty / FAIL-only rows

Baseline libraries:

- WRITE → avadim/fast-excel-writer
- READ → avadim/fast-excel-reader

---

5. Metrics explained
--------------------

[](#5-metrics-explained)

time (ms)
Total execution time.

peak memory (MB)
Peak memory usage.

cells/s
Processed cells per second.

rows/s
Processed rows per second.

%
Relative speed compared to baseline.

Example:

85% → library is 15% slower than baseline
150% → library is 1.5× faster than baseline

---

🇷🇺 РУССКАЯ ВЕРСИЯ
=================

[](#-русская-версия)

1. Установка
------------

[](#1-установка)

Установите зависимости через Composer:

```
composer require avadim/fast-excel-benchmark

```

Папки `/results` и `/tmp` создаются автоматически.

---

2. Запуск бенчмарка
-------------------

[](#2-запуск-бенчмарка)

Основная команда:

```
php console/bench.php

```

Дополнительные параметры:

```
php console/bench.php --out=run1.jsonl
php console/bench.php --phpss-cache=none
php console/bench.php --phpss-cache=memory
php console/bench.php --phpss-cache=memory_gzip
php console/bench.php --phpss-cache=discISAM

```

Что происходит:

1. Выполняются тесты записи (WRITE) для разных размеров таблиц.
2. Создаются XLSX-файлы каждой библиотекой.
3. Выполняются тесты чтения (READ) по файлам, созданным FastExcelWriter.
4. Результаты сохраняются в `/results/.jsonl`.

Каждая строка файла `.jsonl` — отдельная запись JSON.

---

3. Консольный отчет
-------------------

[](#3-консольный-отчет)

Вывод в терминал:

```
php console/report.php

```

Или:

```
php console/report.php --in=run1.jsonl
php console/report.php --md=report.md
php console/report.php --in=run1.jsonl --md=report.md

```

Markdown-отчеты сохраняются в `/results/`.

---

4. Веб-интерфейс с графиками
----------------------------

[](#4-веб-интерфейс-с-графиками)

Откройте в браузере:

```
http://localhost/public/

```

Возможности:

- Интерактивные графики (Chart.js)
- Переключение линейной / логарифмической шкалы
- График относительной скорости (× baseline)
- Экспорт PNG / SVG
- Относительная скорость (%) в таблицах
- Фильтр пустых строк / FAIL

Базовая библиотека (baseline):

- WRITE → avadim/fast-excel-writer
- READ → avadim/fast-excel-reader

---

5. Описание метрик
------------------

[](#5-описание-метрик)

time (ms)
Время выполнения.

peak memory (MB)
Пиковое потребление памяти.

cells/s
Количество обработанных ячеек в секунду.

rows/s
Количество строк в секунду.

%
Относительная скорость относительно baseline.

Пример:

85% → библиотека на 15% медленнее baseline
150% → библиотека в 1.5 раза быстрее baseline

---

Рекомендуется:

- Использовать одинаковые размеры кейсов для корректного сравнения.
- Тестировать разные режимы cache для PhpSpreadsheet.
- Для больших кейсов использовать логарифмическую шкалу.
- Сравнивать не только скорость, но и потребление памяти.

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance55

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/bdb51a3c707497a4cc826ec61af31a3f33f2a372d8245e1d17a51be913d1c916?d=identicon)[avadim](/maintainers/avadim)

---

Top Contributors

[![aVadim483](https://avatars.githubusercontent.com/u/2246758?v=4)](https://github.com/aVadim483 "aVadim483 (2 commits)")

### Embed Badge

![Health badge](/badges/avadim-fast-excel-benchmark/health.svg)

```
[![Health](https://phpackages.com/badges/avadim-fast-excel-benchmark/health.svg)](https://phpackages.com/packages/avadim-fast-excel-benchmark)
```

###  Alternatives

[ramsey/uuid

A PHP library for generating and working with universally unique identifiers (UUIDs).

12.6k700.2M3.3k](/packages/ramsey-uuid)[coderello/laraflash

Advanced flash messages for Laravel.

15737.2k1](/packages/coderello-laraflash)[jaybizzle/hasmeta

Access model meta data as if it was a property on your model

291.9k](/packages/jaybizzle-hasmeta)[adesin-fr/inertiajs-tables-laravel-query-builder

Inertia.js Front-end Components for Spatie's Laravel Query Builder

261.7k](/packages/adesin-fr-inertiajs-tables-laravel-query-builder)[defiant/randomorg

PHP class and Laravel implementation for Random.org

162.5k](/packages/defiant-randomorg)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
