Improve performance of get_categories.

This commit is contained in:
Charles Haley 2011-04-19 10:07:10 +01:00
parent 1e1b530113
commit d95d6eca67

View File

@ -1379,13 +1379,15 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
for (cat, dex, mult, is_comp) in md: for (cat, dex, mult, is_comp) in md:
if not book[dex]: if not book[dex]:
continue continue
tid_cat = tids[cat]
tcats_cat = tcategories[cat]
if not mult: if not mult:
val = book[dex] val = book[dex]
if is_comp: if is_comp:
item = tcategories[cat].get(val, None) item = tcats_cat.get(val, None)
if not item: if not item:
item = tag_class(val, val) item = tag_class(val, val)
tcategories[cat][val] = item tcats_cat[val] = item
item.c += 1 item.c += 1
item.id = val item.id = val
if rating > 0: if rating > 0:
@ -1393,11 +1395,11 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
item.rc += 1 item.rc += 1
continue continue
try: try:
(item_id, sort_val) = tids[cat][val] # let exceptions fly (item_id, sort_val) = tid_cat[val] # let exceptions fly
item = tcategories[cat].get(val, None) item = tcats_cat.get(val, None)
if not item: if not item:
item = tag_class(val, sort_val) item = tag_class(val, sort_val)
tcategories[cat][val] = item tcats_cat[val] = item
item.c += 1 item.c += 1
item.id_set.add(book[0]) item.id_set.add(book[0])
item.id = item_id item.id = item_id
@ -1411,21 +1413,15 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
if is_comp: if is_comp:
vals = [v.strip() for v in vals if v.strip()] vals = [v.strip() for v in vals if v.strip()]
for val in vals: for val in vals:
if val not in tids: if val not in tid_cat:
tids[cat][val] = (val, val) tid_cat[val] = (val, val)
item = tcategories[cat].get(val, None)
if not item:
item = tag_class(val, val)
tcategories[cat][val] = item
item.c += 1
item.id = val
for val in vals: for val in vals:
try: try:
(item_id, sort_val) = tids[cat][val] # let exceptions fly (item_id, sort_val) = tid_cat[val] # let exceptions fly
item = tcategories[cat].get(val, None) item = tcats_cat.get(val, None)
if not item: if not item:
item = tag_class(val, sort_val) item = tag_class(val, sort_val)
tcategories[cat][val] = item tcats_cat[val] = item
item.c += 1 item.c += 1
item.id_set.add(book[0]) item.id_set.add(book[0])
item.id = item_id item.id = item_id