librelist archives

« back to archive

filter优化

filter优化

From:
Uno Young
Date:
2012-03-05 @ 13:54
 唐刚(624910278)  21:36:14
想到一个牛叉的优化filter效率的方法
(来自手机QQ: http://mobile.qq.com )
Young(236584772)  21:36:42
怎么优化?
唐刚<daogangtang@gmail.com>  21:37:09
类似我们目前加入缓存的时候进行排序的方法
唐刚<daogangtang@gmail.com>  21:38:10
虽然query args的形式是无穷多种的,预先做索引基本不可能
但filter的主要放在请求读的函数里面
唐刚<daogangtang@gmail.com>  21:39:43
每次请求来都要去数据库里遍历一次
整体算起来时间就浪费了
Young(236584772)  21:41:02
每次filter一次就缓存一次?
唐刚<daogangtang@gmail.com>  21:41:16
实际上,我们可以把同样的规则转移到save的时候,用修饰器来做此种规则的索引
这样只是在写的时候费时间一点
唐刚<daogangtang@gmail.com>  21:42:18
这适合写少读多的情况
论坛之类的就是这个情况
唐刚<daogangtang@gmail.com>  21:43:38
但规则可能是随着开发进度会变化的
唐刚<daogangtang@gmail.com>  21:45:06
因此我们可以在开始阶段用现在的filter方式写,等差不多规则定型了就迁移到写去
这个索引跟缓存应该还是不一样
索引底层用集合
唐刚<daogangtang@gmail.com>  21:46:52
你们有什么看法
?
陈瀛(974992823)  21:47:18
我不懂就看看
呵呵
Young(236584772)  21:48:45
少数还可以,但filter的多了之后也麻烦
唐刚<daogangtang@gmail.com>  21:49:00
这样如果实现的话,时间复杂度就可以维持在O(logN)
相当于我们可以整一个filter列表
唐刚<daogangtang@gmail.com>  21:50:22
可以放在一起管理,就想我那个cache的callback那样写
柯南,你帮我把这个copy下来发到邮件里面
唐刚<daogangtang@gmail.com>  21:51:32
我手机上不好转