-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add some clarity on speed, showcase and project state
Long time no see :)
- Loading branch information
Showing
1 changed file
with
17 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,26 +10,15 @@ pip install duper | |
[Skip to FAQ](#faq)... | ||
|
||
|
||
### 🚧 Project is in development | ||
Current priorities | ||
- [x] Support for immutable types | ||
- [x] Support for builtin types | ||
- [x] Support for arbitrary types | ||
- [x] Partial support for `__deepcopy__` and `__copy__` overrides (memo is not respected) | ||
- [ ] Support for recursive structures | ||
- [ ] Find quirky corner cases | ||
- [ ] Make initial construction faster (potentially 30-50 times faster than current implementation) | ||
- [ ] Support memo in `__deepcopy__` and `__copy__` overrides | ||
|
||
The project will be ready for release when `duper.deepdups(x)()` behaves the same as `copy.deepcopy()` and is at least as fast, if not faster. | ||
|
||
Currently, `duper.deepdups(x)` is on average 2-5 times slower than `copy.deepcopy()`, so it's recommended to use it only when you need many copies of the same object. | ||
Note: In its current implementation, duper.deepdups(x) might be 2-5 times slower than copy.deepcopy() for a single operation. It's when you need to create many identical copies of the same object, using duper.deepdups(x) is going to be advantageous due to its specific design. | ||
|
||
If you have any feedback or ideas, please [open an issue on GitHub](https://github.com/Bobronium/duper/issues) or reach out via [[email protected]](mailto:[email protected]) or [Telegram](https://t.me/Bobronium). | ||
|
||
--- | ||
|
||
### Showcase | ||
##### Using unreleased [timesup](https://github.com/Bobronium/timesup) library \o/. I've planned to release it soon after this one, but had to spend my *time* elswhere and put Open Source on pause. Hopefully, I'll make a first release later this year. | ||
|
||
```py | ||
import duper | ||
import copy | ||
|
@@ -156,4 +145,17 @@ copies = [reconstruct_data() for _ in range(10000)] | |
``` | ||
|
||
#### Is it production ready? | ||
[Hell no!](#-project-is-in-development) | ||
[Hell no!](#-project-is-in-poc-state) | ||
|
||
### 🚧 Project is in a PoC state | ||
Current priorities | ||
- [x] Support for immutable types | ||
- [x] Support for builtin types | ||
- [x] Support for arbitrary types | ||
- [x] Partial support for `__deepcopy__` and `__copy__` overrides (memo is not respected) | ||
- [ ] Support for recursive structures | ||
- [ ] Find quirky corner cases | ||
- [ ] Make initial construction faster (potentially 30-50 times faster than current implementation) | ||
- [ ] Support memo in `__deepcopy__` and `__copy__` overrides | ||
|
||
The project will be ready for release when `duper.deepdups(x)()` behaves the same as `copy.deepcopy()` and is at least as fast, if not faster. |