From: Matthias A. <mat...@gm...> - 2010-04-24 06:40:05
|
Please check out http://gitorious.org/fetchmail/fetchmail/commits/for-rainer/ You can download this as tarball, but you still need to follow the build-from-Git instructions (basically, run autoreconf -isv first). It contains a lightweight version of your patch (see the two latest commits). The fastuidl fix is less efficient, but also less needed since the amount of UIDs added is ld N there, so we get O(n log n) complexity for parsing the UIDL responses. The UIDL fix is O(n) for the actual insertion, but remains O(n^2) for "message seen yet?" detection. I wonder if I should kill fastuidl in fetchmail 6.4. It has quite a few quirks and is only useful on low-bandwidth low-latency links. DSL, GSM, GPRS and thereabouts are high-latency. Example: On DSL a line w/ 6 MBit/s and 40 ms round trips, the regular UIDL code is still faster for 10000 UIDs. The tree above also contains a few cleanups (idlist functions were split out from uid.c to a new idlist.c file). CPU is a different issue; to fix this for good, unless I'm mistaken, we need to split the message flags from the UID linked list. The former goes in an array (which needs to store only the mark byte per message), the latter into a btree (UID -> number). I may need to kill the slow UIDL emulation code (header-/Message-ID based) along the way, if so, the speedup will hardly be fit for 6.3.X, but rather for 6.4.X. HTH Matthias |