Skip to content

Latest commit

 

History

History
 
 

benchmarks

Benchmarks

These benchmarks were generated using pytest-speed as a drop-in replacement for pytest-benchmark,

Using the following command:

make build-prod
BENCHMARK_VS_PYDANTIC=1 pytest tests/benchmarks --bench-save

There are also some benchmarks written in rust, see the benches directory.

                                           Benchmarks main (c07ec73)
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃  Group              ┃  Test Name           ┃  Best (ns/iter)  ┃  Relative  ┃  Stddev (ns/iter)  ┃  Iterations  ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│  complete           │  complete_core_lax   │         27242.5  │            │             357.1  │     108,500  │
│                     │  complete_core_str…  │         30905.0  │   +13.44%  │             637.7  │      93,500  │
│                     │  complete_pyd        │        482301.5  │    x17.70  │            5760.0  │       6,200  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  complete-wrong     │  complete_core_err…  │        226719.5  │            │            3251.4  │      13,030  │
│                     │  complete_pyd_error  │       1478600.2  │     x6.52  │           40137.5  │       2,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  complete-json      │  complete_core_json  │         52805.6  │            │             644.1  │      55,700  │
│                     │  complete_pyd_json   │        541623.9  │    x10.26  │            3254.5  │       5,460  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  simple model -     │  core_python         │          4402.5  │            │             145.5  │     647,300  │
│  python             │                      │                  │            │                    │              │
│                     │  pyd_python          │        179636.8  │    x40.80  │            4410.7  │      16,460  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  simple model -     │  core_json           │         13113.7  │            │             86.17  │     225,100  │
│  JSON               │                      │                  │            │                    │              │
│                     │  pyd_json            │        195594.0  │    x14.92  │             380.4  │      15,150  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  bool               │  bool_core           │           798.4  │            │              5.07  │   1,000,000  │
│                     │  bool_pyd            │         12928.5  │    x16.19  │             25.54  │     229,300  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  create small       │  small_class_core_…  │           154.9  │            │              4.11  │   1,000,000  │
│  model              │                      │                  │            │                    │              │
│                     │  small_class_core_…  │           368.2  │     x2.38  │              8.43  │   1,000,000  │
│                     │  small_class_pyd     │          2079.0  │    x13.42  │             34.82  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  string             │  core_string_lax     │           39.95  │            │              1.56  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  recursive model    │  definition_model_…  │         44502.8  │            │             659.4  │      66,900  │
│                     │  definition_model_…  │        311657.3  │     x7.00  │           11134.4  │       8,890  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  List[TypedDict]    │  list_of_dict_mode…  │           997.8  │            │             22.00  │   1,000,000  │
│                     │  list_of_dict_mode…  │        215779.1  │   x216.26  │            2607.4  │      13,580  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  List               │  list_of_ints_core…  │         17823.0  │            │             94.48  │     161,100  │
│                     │  list_of_ints_pyd_…  │       1228884.4  │    x68.95  │           25069.2  │       2,430  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  List JSON          │  list_of_ints_core…  │         73967.8  │            │             535.0  │      40,100  │
│                     │  list_of_ints_pyd_…  │       1298000.5  │    x17.55  │            4830.6  │       2,300  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  List[Any]          │  list_of_any_core_…  │         17810.3  │            │             99.89  │     164,800  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  Set                │  set_of_ints_core    │         47056.8  │            │             348.5  │      62,400  │
│                     │  set_of_ints_pyd     │       1265976.2  │    x26.90  │             611.8  │       2,350  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  Set JSON           │  set_of_ints_core_…  │        113685.1  │            │             698.0  │      25,600  │
│                     │  set_of_ints_pyd_j…  │       1312981.5  │    x11.55  │            3943.3  │       2,270  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  FrozenSet          │  frozenset_of_ints…  │         20635.7  │            │             32.46  │     144,500  │
│                     │  frozenset_of_ints…  │        600708.8  │    x29.11  │            2424.5  │       4,950  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  Dict               │  dict_of_ints_core   │         68683.4  │            │             188.8  │      43,200  │
│                     │  dict_of_ints_pyd    │       2417716.0  │    x35.20  │            2351.8  │       2,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  Dict               │  dict_of_any_core    │         68990.7  │            │            1183.5  │      43,100  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  Dict JSON          │  dict_of_ints_core…  │        287942.7  │            │            3095.0  │      10,110  │
│                     │  dict_of_ints_pyd_…  │       2560366.2  │     x8.89  │           26285.4  │       2,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  List[SimpleMode]   │  many_models_core_…  │          8736.1  │            │             148.0  │     339,100  │
│                     │  many_models_pyd     │       2353543.1  │   x269.41  │           37640.3  │       2,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  List[DictSimpleM…  │  many_models_core_…  │          8692.2  │            │             140.1  │     336,600  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  List[Nullable]     │  list_of_nullable_…  │         10287.8  │            │             222.1  │     283,600  │
│                     │  list_of_nullable_…  │        522372.1  │    x50.78  │            7446.9  │       5,530  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  bytes              │  bytes_core          │           40.31  │            │             0.570  │   1,000,000  │
│                     │  bytes_pyd           │          1380.7  │    x34.25  │              8.83  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  datetime model -   │  core_python         │           318.9  │            │              2.21  │   1,000,000  │
│  python             │                      │                  │            │                    │              │
│                     │  pyd_python          │          1388.6  │     x4.35  │              6.41  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  datetime model -   │  model_core_json     │           530.0  │            │              3.54  │   1,000,000  │
│  JSON               │                      │                  │            │                    │              │
│                     │  model_pyd_json      │          5984.3  │    x11.29  │             24.47  │     490,400  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  datetime datetime  │  core_raw            │           43.14  │            │             0.289  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  datetime str       │  core_str            │           145.1  │            │             0.417  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  datetime future    │  core_future_str     │           151.3  │            │             0.454  │   1,000,000  │
│                     │  core_future         │           373.2  │     x2.47  │              1.43  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  date from date     │  date_from_date      │           43.33  │            │             0.235  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  date from str      │  date_from_str       │           89.67  │            │             0.439  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  date from          │  date_from_datetime  │           254.6  │            │              1.33  │   1,000,000  │
│  datetime           │                      │                  │            │                    │              │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  date from          │  date_from_datetim…  │           134.3  │            │             0.330  │   1,000,000  │
│  datetime str       │                      │                  │            │                    │              │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  date future        │  core_future_str     │           92.81  │            │              2.01  │   1,000,000  │
│                     │  core_future         │           128.4  │   +38.39%  │              4.02  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  smart-union        │  smart_union_core    │           92.33  │            │             0.512  │   1,000,000  │
│                     │  smart_union_pyd     │          1649.9  │    x17.87  │             24.80  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  smart-union-coer…  │  smart_union_coerc…  │           118.3  │            │              1.79  │   1,000,000  │
│                     │  smart_union_coerc…  │          2189.1  │    x18.50  │             39.24  │   1,000,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  strict-union       │  strict_union_core   │           114.5  │            │              1.01  │   1,000,000  │
│                     │  strict_union_pyd    │          2981.8  │    x26.05  │             13.78  │     987,000  │
├─────────────────────┼──────────────────────┼──────────────────┼────────────┼────────────────────┼──────────────┤
│  strict-union-err…  │  strict_union_erro…  │           537.3  │            │              3.75  │   1,000,000  │
│                     │  strict_union_erro…  │          3372.6  │     x6.28  │             60.71  │     864,600  │
└─────────────────────┴──────────────────────┴──────────────────┴────────────┴────────────────────┴──────────────┘