tarquin wrote:
I might be stating the obvious here...
but each time I look at my watchlist, only a dozen or so pages have
moved to the top.
So you could discard everything that is older than the last view, or
maybe the last day / week (user option?)
To do that with the current table structure you have to either:
a) check every single watched page to see if it's recent enough to look
at (this is exactly the previous behavior!),
or
b) start from the most recently edited page and move down through every
page checking for watched pages until we've met our display quota or
reached the cutoff time.
a) is cheap with small watchlists, but very expensive with some power
users where we may be checking a couple thousand pages.
b) is cheap if the number of edits since the cutoff time is small, but
very expensive if any real length of time is to be checked... 2796 pages
were edited in the last 24 hours, all of which would have to be checked
if we want to check for the last day's updates to our watchlist in this
way -- even if the watchlist only has ten items!
I've patched it up for now so that it checks how many pages are in your
watchlist, and how many pages total have been edited since the cutoff
time, and tries to pick the more efficient method.
I've set the default cutoff to one hour; this will generally cover
between 100 and 300 edits, which is a lot faster than, say, all 1452
entries in my watchlist. :) If you pick a cutoff that covers more edits
than are in your watchlist (plus or minus some fudge factors), it'll
switch back to the traditional method and just look through your list.
Searching 1452 entries may suck, but that's better than trawling all
16000 or so you'll find edited in a whole week. ;)
Or would this method be better:
1. grab stored version watchlist (already ordered)
2. get date of last view of watchlist
3. examine the RC list from that date on
4. pick out items from that list that exist on the watchlist
I'm not sure how cleanly that could be done, hmm...
-- brion vibber (brion @
pobox.com)