tqdm/tqdm.cpp

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.