Files
pydantic-vs-msgspec/README.md
2023-10-19 22:08:52 +02:00

68 lines
4.2 KiB
Markdown

# Pydantic 2 vs MsgSpec
Libs used for benchmark:
- [pydantic 2.4.2](https://docs.pydantic.dev/latest/)
- [msgspec 0.18.4](https://jcristharif.com/msgspec/index.html)
- [attrs 23.1.0](https://www.attrs.org)
Note that Pydantic used in benchmark is v2 which should be dozen of times faster than Pydantic v1. I have no time to waste benchmarking Pydantic v1.
## Usage
### Install virtual environment
```
poetry install
```
### Create test data
- Edit `benchmark/factories.py` and set `COLUMNS_COUNT` and `PLANOGRAMS_COUNT` to desired size.
- Uncomment `create_test_file(TEST_DATA_FILE)` line in main.py
- Run main.py
You can comment back this line after json test file is created.
### Run benchmark
```
python main.py
```
## Results
Test file: json, 162MB
```
*** Running PydanticBenchmark
Finished in 10.733s
*** Running AttrsBenchmark
Finished in 3.271s
*** Running MsgSpecBenchmark
Finished in 1.685s
```
```
██████╗ ██╗ ██╗██████╗ █████╗ ███╗ ██╗████████╗██╗ ██████╗
██╔══██╗╚██╗ ██╔╝██╔══██╗██╔══██╗████╗ ██║╚══██╔══╝██║██╔════╝
██████╔╝ ╚████╔╝ ██║ ██║███████║██╔██╗ ██║ ██║ ██║██║
██╔═══╝ ╚██╔╝ ██║ ██║██╔══██║██║╚██╗██║ ██║ ██║██║
██║ ██║ ██████╔╝██║ ██║██║ ╚████║ ██║ ██║╚██████╗
╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝
██╗ ██╗ ██████╗ ██╗ ██╗ ███████╗██╗ ██╗ ██████╗██╗ ██╗ ██████╗ █████╗ ██╗ ██╗ ███████╗
╚██╗ ██╔╝██╔═══██╗██║ ██║ ██╔════╝██║ ██║██╔════╝██║ ██╔╝ ██╔══██╗██╔══██╗██║ ██║ ██╔════╝
╚████╔╝ ██║ ██║██║ ██║ ███████╗██║ ██║██║ █████╔╝ ██████╔╝███████║██║ ██║ ███████╗
╚██╔╝ ██║ ██║██║ ██║ ╚════██║██║ ██║██║ ██╔═██╗ ██╔══██╗██╔══██║██║ ██║ ╚════██║
██║ ╚██████╔╝╚██████╔╝ ███████║╚██████╔╝╚██████╗██║ ██╗ ██████╔╝██║ ██║███████╗███████╗███████║
╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
██████╗ ██╗ ██████╗ ████████╗██╗███╗ ███╗███████╗
██╔══██╗██║██╔════╝ ╚══██╔══╝██║████╗ ████║██╔════╝
██████╔╝██║██║ ███╗ ██║ ██║██╔████╔██║█████╗
██╔══██╗██║██║ ██║ ██║ ██║██║╚██╔╝██║██╔══╝
██████╔╝██║╚██████╔╝ ██║ ██║██║ ╚═╝ ██║███████╗
╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝
```