再用关键词统计这个案例,把3种算法优化思路讲清楚。
前面,关于不分大小写批量统计关键词的文章《n个关键词,还大小写不一,咋统计?》里提到,里面所使用的方法还有进一步优化的空间,今天我们就继续用这个例子,讲一下算法优化的问题。给大家在使用PQ解决问题需要提升运算效率时提供一些参考。
针对这个问题原来的算法,至少可以从以下三个方面进行优化。
-1- 避免内容重复转换,减少计算
对于关键词进行统计的时候,因为在对描述内容进行拆分前需要转大写,结果,在原来的算法里,对每个关键词都要将描述的内容进行转换,代码如下所示:
而实际上,对于每一项内容,不管关键词有多少个,只要先做一次大写转换的操作,后面针对每个关键词的转换都可以直接调用已经转换好的内容进行拆分,这样,就能减少重复转换的次数,修改后的代码如下:
因为大家普遍关注M函数的具体应用,却比较少关注let...in...这个基本结构,因此,不要惊讶,let...in...是可以用在任何地方,也可以进行多层嵌套使用的,对于这一点,如果大家觉得有必要,后面可以用专门的文章讲解。
-2- 避免关键词重复转换,减少计算
前面我们通过在进行关键词统计前对内容进行大写转换,使得针对每一项内容都只需进行一次转换,但是,在有多项内容的情况下,关键词也存在多次转换的情况(对每项内容都需要转换一次),因此,我们其实可以考虑提前把关键词转换好,如直接在关键词表里增加一列:
这样,我们在后面的统计里,可以直接引用该“大写关键词”列进行统计,将不需要进行任何大小写转换了:
-3- 缓存关键词,提升调用效率
前面两个方法能在很大程度上减少计算次数,但对于这个涉及到重复多次调用同一关键词列表的问题,我们可以进一步优化(关于缓存提升效率的问题可以参考文章《PQ-M及函数:加Buffer缓存提升查询效率》)
即对这个关键词的列表进行缓存(这时,无需对关键词提前增加一列转为大写,可以直接在缓存时转为大写),如下所示:
这样可以使得后续的调用过程效率更高:
以上,是基于关键词统计案例中涉及算法的一些优化思路,仅供参考。
算法的优化是一个很复杂的问题,没有太多固定的模式或百分百可行的套路,比如本案例中提到缓存问题,如果需要缓存的内容本身就很大,那可能会直接把缓存撑爆,还没开始计算就卡死了……
因此,在实际工作中,一定要根据自己的情况去想具体的办法,案例也许能为你提供一些优化的思路,但不要把它当做金科玉律,因为这些案例中所使用的方法,大都是有其特定背景的。
【近期热门合集/文章】