Versions & Releases
CrazyPython opened this issue · 5 comments
My idea for the goals of (the short-term) v0.1α:
- Working
- Decent performance (< 80ns, since C++)
- Simple API that we're satisfied with and don't want to change (important!)
Non-goals:
- Have tests
- Support C or C++98
v1.0:
- All the milestone goals I created. This includes tests, Continuous Integration, Website, Contributing.md, etc.
- Fast performance, <X ns.
Releases 0.2 - 1.0 should try to achieve higher performance and move towards the milestone goals.
What should be the performance goals though? C++ is inherently faster than Python so I think we should be able to achieve under 40 ns. Better first whip up a decently fast mock and see how fast it is.
performance is probably a non-issue. I can't see this taking more than 10ns/it. Certainly not in the short term where we'll only have basic features. C support as I mentioned elsewhere is going to be a completely different repo (tqdm.c) that you guys are all welcome to create and manage.
@casperdcl One of the selling points of python tqdm was speed. C++ is faster so to maintain the same relative speediness we'll need to reduce nanoseconds/iteration to C++ fast, vs. Python fast.
from cpp test:
ye moste pythonic range(), auto type inference
100%|#############| 4095/4095 [00:00<00:00, 11062933.00it/s]
python equivalent:
>>> import tqdm; [0 for _ in tqdm.trange(0, 8192, 2)]
100%|██████████| 4096/4096 [00:00<00:00, 4790816.84it/s]
@casperdcl 2.3x faster. Good.
a bit buggy, tho. 4095 versus 4096. Haven't looked at that yet.