From 3e2d1248d8eb9231b7c1ff46d1f39a61808efd31 Mon Sep 17 00:00:00 2001 From: Andrej Karpathy Date: Fri, 26 Nov 2021 10:22:52 -0800 Subject: [PATCH] speed up time filtering by 20X by loading all of metas into memory once instead of querying it item by item in a massive loop --- serve.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/serve.py b/serve.py index fcd1556..31d91d4 100644 --- a/serve.py +++ b/serve.py @@ -187,9 +187,10 @@ def main(): # filter by time if opt_time_filter: mdb = get_metas() + kv = {k:v for k,v in mdb.items()} # read all of metas to memory at once, for efficiency tnow = time.time() deltat = int(opt_time_filter)*60*60*24 # allowed time delta in seconds - keep = [i for i,pid in enumerate(pids) if (tnow - mdb[pid]['_time']) < deltat] + keep = [i for i,pid in enumerate(pids) if (tnow - kv[pid]['_time']) < deltat] pids, scores = [pids[i] for i in keep], [scores[i] for i in keep] # optionally hide papers we already have