| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
DocDescriptor isn't meant to be public API. Can we rename it to a private class? |
Sorry, something went wrong.
Move the default docstring construction to occur on-access through a descriptor. Verified with [tprof](https://github.com/adamchainz/tprof) and this script that generates 10k dataclasses: ```py from dataclasses import dataclass for i in range(10_000): @DataClass class Example: field1: int field2: str field3: float ``` **Before:** ``` $ tprof -t dataclasses._process_class example.py 🎯 tprof results: function calls total mean ± σ min … max dataclasses._process_class() 10000 5s 485μs ± 120μs 458μs … 6ms ``` After: ``` $ PYTHONPATH=Lib/ uvx tprof -t dataclasses._process_class example.py 🎯 tprof results: function calls total mean ± σ min … max dataclasses._process_class() 10000 3s 275μs ± 131μs 245μs … 6ms ``` The mean time spent in `_process_class()` has dropped from 485μs to 275μs, a ~42% time saving (admittedly skewed due to the small size of the dataclass).
Good point, done! |
Sorry, something went wrong.
|
Hehe, funny, I ended doing do same trick in my recent PR #144387, with the main purpose of being able to lazy import the inspect module. It's great to see it improves dataclass creation as well (I had a hunch but didn't do careful benchmarking). |
Sorry, something went wrong.
|
Aha. I guess your PR wins then, with the lazy import a bonus. |
Sorry, something went wrong.
|
This PR is stale because it has been open for 30 days with no activity. |
Sorry, something went wrong.
|
#144387 has been merged, let's close this. Thanks anyway :) |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Move the default docstring construction to occur on-access through a descriptor.
Verified with tprof and this script that generates 10k dataclasses:
Before:
After:
The mean time spent in _process_class() has dropped from 485μs to 275μs, a ~42% time saving (admittedly skewed due to the small size of the dataclass).