qpull/qpush: progress bar is too verbose and therefore slowdown operation

Bug #242659 reported by Alexander Belchenko
2
Affects Status Importance Assigned to Milestone
QBzr
Fix Released
Low
Alexander Belchenko

Bug Description

I'm playing a bit with qpush/qpull and find them very slow comparing to CLI. IMO it's because qsubprocess send all changes of progress bar to frontend window.

Probably we need to reduce size or qty per sec of this messages. Anther option is reworking this progress bar reporting (excluding option of rewriting it in bzrlib :-).

Tags: qpull qpush speed
Changed in qbzr:
importance: Undecided → Low
milestone: none → 1.0
status: New → Triaged
Revision history for this message
Alexander Belchenko (bialix) wrote :

I've measured local push of entire branch (creating new branch). qpush is very slow.

qpush: about 7min.
std push: about 2 sec.

Something really going wrong here. We need to rework progress bar system.

Revision history for this message
Alexander Belchenko (bialix) wrote :

the numbers above is for pushing qbzr trunk revno.260.

Revision history for this message
Alexander Belchenko (bialix) wrote :

For [q]pull qbzr-trunk to empty branch:

qpull: 6m30s
pull: 2sec

Revision history for this message
Alexander Belchenko (bialix) wrote :

If I won't manage this slowness I will release 1.0 without this commands (being public at least).

Revision history for this message
Alexander Belchenko (bialix) wrote :

I did some experiments and it seems like bottleneck actually inside _report() method of SubprocessProgress. Also there is too much ticks generated per millisecond. So I'd like to thin out messages by some algorithm.

Any ideas?

Revision history for this message
Alexander Belchenko (bialix) wrote :

More investigations: commenting out sys.stdin.readline() allow me reach speed of light. So problem probably here. Not in the rate of messages but in blocking sys.stdin read operation.

Revision history for this message
Alexander Belchenko (bialix) wrote :

Fixing this by performing blocking read in separate QThread.

Changed in qbzr:
assignee: nobody → bialix
milestone: 1.0 → 0.9.2
status: Triaged → Fix Committed
Changed in qbzr:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.