# 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 ``` ``` ██████╗ ██╗ ██╗██████╗ █████╗ ███╗ ██╗████████╗██╗ ██████╗ ██╔══██╗╚██╗ ██╔╝██╔══██╗██╔══██╗████╗ ██║╚══██╔══╝██║██╔════╝ ██████╔╝ ╚████╔╝ ██║ ██║███████║██╔██╗ ██║ ██║ ██║██║ ██╔═══╝ ╚██╔╝ ██║ ██║██╔══██║██║╚██╗██║ ██║ ██║██║ ██║ ██║ ██████╔╝██║ ██║██║ ╚████║ ██║ ██║╚██████╗ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ██╗ ██╗ ██████╗ ██╗ ██╗ ███████╗██╗ ██╗ ██████╗██╗ ██╗ ██████╗ █████╗ ██╗ ██╗ ███████╗ ╚██╗ ██╔╝██╔═══██╗██║ ██║ ██╔════╝██║ ██║██╔════╝██║ ██╔╝ ██╔══██╗██╔══██╗██║ ██║ ██╔════╝ ╚████╔╝ ██║ ██║██║ ██║ ███████╗██║ ██║██║ █████╔╝ ██████╔╝███████║██║ ██║ ███████╗ ╚██╔╝ ██║ ██║██║ ██║ ╚════██║██║ ██║██║ ██╔═██╗ ██╔══██╗██╔══██║██║ ██║ ╚════██║ ██║ ╚██████╔╝╚██████╔╝ ███████║╚██████╔╝╚██████╗██║ ██╗ ██████╔╝██║ ██║███████╗███████╗███████║ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝ ██████╗ ██╗ ██████╗ ████████╗██╗███╗ ███╗███████╗ ██╔══██╗██║██╔════╝ ╚══██╔══╝██║████╗ ████║██╔════╝ ██████╔╝██║██║ ███╗ ██║ ██║██╔████╔██║█████╗ ██╔══██╗██║██║ ██║ ██║ ██║██║╚██╔╝██║██╔══╝ ██████╔╝██║╚██████╔╝ ██║ ██║██║ ╚═╝ ██║███████╗ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ```