增强else-if链的性能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了增强else-if链的性能相关的知识,希望对你有一定的参考价值。
我正在NodeJ上构建服务。我具有网络抓取功能,并且必须为不同的域调用不同的搜寻器。
if (domain == "aaa.kr") result = await crawlAA(args.url)
else if (domain == "aaa.com") result = await crawlA(args.url)
else if (domain == "bbb.com") result = await crawlB(args.url)
else if (domain == "ccc.com") result = await crawlC(args.url)
else if (domain == "d.com") result = await crawlD(args.url)
else result = await crawlOthers(args.url)
现在,我有大约10个else if
子句。但是,我将需要添加超过50〜100个else-if
,并且我认为这将来可能会成为问题。
有没有有效的方法来处理字符串if子句?主要由开始字母过滤是否有帮助?
答案
[性能在这里几乎绝对不是问题-没有循环或嵌套循环,如果您有很多else
/ if
,这里的问题就是非常WET的代码。
而不是使用大量独立的crawl
函数,而是使用由域索引的对象,例如:
const fns = {
'aaa.kr': <code of crawlAA here>,
'aaa.com': <code of crawlA here>,
'bbb.com': <code of crawlB here>,
// ...
};
然后在尝试找到result
并调用它时,在对象上找到适当的函数值:
const fn = fns[domain];
const result = fn ? fn(args.url) : crawlOthers(args.url);
以上是关于增强else-if链的性能的主要内容,如果未能解决你的问题,请参考以下文章
将最可能的真实条件放入 if、else-if 或 else 有啥不同
一行代码实现Python运行性能增强百倍,性能发动机numba模块介绍