serialize instead of deepcopy for performance gains #118
Annotations
1 warning and 2 notices
benchmark
The following actions use a deprecated Node.js version and will be forced to run on node20: actions/cache@v3. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
|
Benchmark results:
python/langsmith/_internal/_background_thread.py#L1
.........................................
create_5_000_run_trees: Mean +- std dev: 705 ms +- 49 ms
.........................................
create_10_000_run_trees: Mean +- std dev: 1.35 sec +- 0.07 sec
.........................................
create_20_000_run_trees: Mean +- std dev: 1.35 sec +- 0.07 sec
.........................................
dumps_class_nested_py_branch_and_leaf_200x400: Mean +- std dev: 767 us +- 16 us
.........................................
dumps_class_nested_py_leaf_50x100: Mean +- std dev: 27.2 ms +- 0.3 ms
.........................................
dumps_class_nested_py_leaf_100x200: Mean +- std dev: 112 ms +- 3 ms
.........................................
dumps_dataclass_nested_50x100: Mean +- std dev: 27.5 ms +- 0.3 ms
.........................................
WARNING: the benchmark result may be unstable
* the standard deviation (6.89 ms) is 12% of the mean (59.3 ms)
Try to rerun the benchmark with more runs, values and/or loops.
Run 'python -m pyperf system tune' command to reduce the system jitter.
Use pyperf stats, pyperf dump and pyperf hist to analyze results.
Use --quiet option to hide these warnings.
dumps_pydantic_nested_50x100: Mean +- std dev: 59.3 ms +- 6.9 ms
.........................................
WARNING: the benchmark result may be unstable
* the standard deviation (29.6 ms) is 14% of the mean (216 ms)
Try to rerun the benchmark with more runs, values and/or loops.
Run 'python -m pyperf system tune' command to reduce the system jitter.
Use pyperf stats, pyperf dump and pyperf hist to analyze results.
Use --quiet option to hide these warnings.
dumps_pydanticv1_nested_50x100: Mean +- std dev: 216 ms +- 30 ms
|
Comparison against main:
python/langsmith/_internal/_background_thread.py#L1
+-----------------------------------------------+----------+------------------------+
| Benchmark | main | changes |
+===============================================+==========+========================+
| dumps_class_nested_py_branch_and_leaf_200x400 | 763 us | 767 us: 1.01x slower |
+-----------------------------------------------+----------+------------------------+
| dumps_class_nested_py_leaf_100x200 | 111 ms | 112 ms: 1.01x slower |
+-----------------------------------------------+----------+------------------------+
| dumps_class_nested_py_leaf_50x100 | 26.8 ms | 27.2 ms: 1.01x slower |
+-----------------------------------------------+----------+------------------------+
| dumps_dataclass_nested_50x100 | 27.1 ms | 27.5 ms: 1.02x slower |
+-----------------------------------------------+----------+------------------------+
| create_10_000_run_trees | 1.13 sec | 1.35 sec: 1.20x slower |
+-----------------------------------------------+----------+------------------------+
| create_20_000_run_trees | 1.11 sec | 1.35 sec: 1.22x slower |
+-----------------------------------------------+----------+------------------------+
| create_5_000_run_trees | 565 ms | 705 ms: 1.25x slower |
+-----------------------------------------------+----------+------------------------+
| Geometric mean | (ref) | 1.08x slower |
+-----------------------------------------------+----------+------------------------+
Benchmark hidden because not significant (2): dumps_pydanticv1_nested_50x100, dumps_pydantic_nested_50x100
|