Compare_lplib_pylpbugs
time based comparison of python-launchpad-bugs and launchpadlib
This is still work in progress. python's timeit is used.
Preparation
launchpadlib
There are two files with credentials for STAGING and EDGE, for each mode the connector is created by
>>> credentials = Credentials() >>> credentials.load(open(<file>)) >>> launchpad = Launchpad(credentials, <SERVER-const>)
python-launchpad-bugs (text)
(read-only access)
>>> Bug = ConnectBug("text") >>> Bug.set_connection_mode(<SERVER-const>)
python-launchpad-bugs (html)
(this connection mode is used for write-access)
>>> Bug = ConnectBug("html") >>> Bug.authentication = <cookie-file> >>> Bug.set_connection_mode(<SERVER-const>)
Results
20080809
Versions
launchpadlib: lp:launchpadlib (rev8)
python-launchpad-bugs: lp:python-launchpad-bugs (rev152)
Results
Task |
Lib |
Code |
STAGING |
EDGE |
get description of #123456 |
launchpadlib |
>>> b = launchpad.bugs[123456] |
10 loops, best of 3: 2.09 s per loop |
10 loops, best of 3: 2.65 s per loop |
py-lp-bugs (text) |
>>> b = Bug(123456) |
10 loops, best of 3: 638 ms per loop |
10 loops, best of 3: 808 ms per loop |
|
get status of all tasks of #123456 |
launchpadlib |
>>> b = launchpad.bugs[123456] |
10 loops, best of 3: 2.23 s per loop |
10 loops, best of 3: 2.86 s per loop |
py-lp-bugs (text) |
>>> b = Bug(123456) |
10 loops, best of 3: 641 ms per loop |
10 loops, best of 3: 756 ms per loop |
|
change status of first task of #255634 |
py-lp-bugs (html) |
>>> status_map = {"New": "Invalid", "Invalid": "New"} |
|
10 loops, best of 3: 6.83 s per loop |
launchpadlib |
>>> status_map = {"New": "Invalid", "Invalid": "New"} |
|
10 loops, best of 3: 3.66 s per loop |
Conclusion
for read-only access python-launchpad-bugs in the text mode is about three times faster than launchpadlib
write-access with launchpadlib is two times faster than python-launchpad-bugs in the html mode
20080821
Versions
launchpadlib: lp:launchpadlib (rev13)
wadllib: lp:wadllib (rev6)
python-launchpad-bugs: lp:python-launchpad-bugs (rev152)
Results
Task |
Lib |
Code |
STAGING |
EDGE |
get description of #123456 |
launchpadlib |
>>> b = launchpad.bugs[123456] |
|
10 loops, best of 3: 189 ms per loop |
py-lp-bugs (text) |
>>> b = Bug(123456) |
|
|
|
get status of all tasks of #123456 |
launchpadlib |
>>> b = launchpad.bugs[123456] |
|
|
py-lp-bugs (text) |
>>> b = Bug(123456) |
|
|
|
change status of first task of #255634 |
py-lp-bugs (html) |
>>> status_map = {"New": "Invalid", "Invalid": "New"} |
|
|
launchpadlib |
>>> status_map = {"New": "Invalid", "Invalid": "New"} |
|
|
Conclusion
- I'm not able to get time-stable results from staging, will try it later again
20090109
Versions
launchpadlib: lp:launchpadlib (rev29)
wadllib: lp:wadllib (rev6)
python-launchpad-bugs: lp:python-launchpad-bugs (rev171)
Preparations
The timings for launchpadlib are now part of the launchpad profile for ipython. To run this timings get the code from lp:~thekorn/+junk/ipython.launchpad.profile, copy the profile to ~/.ipython and run:
% LPTIMING=1 ipython -p launchpad #for staging, or % LPMODE=edge LPTIMING=1 ipython -p launchpad #for edge
Results
Task |
Lib |
Code |
STAGING |
EDGE |
get description of #123456 |
launchpadlib |
>>> b = launchpad.bugs[123456] |
10 loops, best of 3: 2.36 s per loop |
10 loops, best of 3: 136 ms per loop |
py-lp-bugs (text) |
>>> b = Bug(123456) |
|
|
|
get status of all tasks of #123456 |
launchpadlib |
>>> b = launchpad.bugs[123456] |
10 loops, best of 3: 3.69 s per loop |
10 loops, best of 3: 306 ms per loop |
py-lp-bugs (text) |
>>> b = Bug(123456) |
|
|
|
change status of first task of #255634 |
py-lp-bugs (html) |
>>> status_map = {"New": "Invalid", "Invalid": "New"} |
|
|
launchpadlib |
>>> status_map = {"New": "Invalid", "Invalid": "New"} |
10 loops, best of 3: 10.2 s per loop |
10 loops, best of 3: 1.16 s per loop |
Conclusion
- edge is looking good, speed seems to be improved since I checked it the last time few month ago
Missing features in launchpadlib
This is a list of which can be done with python-launchpad-bugs but not with launchpadlib. (still work in progress)
Feature |
LP Bug |
Comment |
getting a list of users bugs |
Bug 281443 and Bug 282178 |
|
nominate a bug for a release |
|
|
setting bug privacy |
|
|
removing attachments |
|
|
API to /+storeblob |
|
|
changing target of tasks |
|
|
dates are strings, not datetime objects |
|
|
API for activitylog |
|
|
anonymous access |
|
|
search by date_ |
|
|
search for bugs w/o a tag |
|
|