var fruits = [];
fruits.push("lemon", "lemon", "lemon", "lemon");
Run Code Online (Sandbox Code Playgroud)
而不是推动相同的元素,如何像这样写一次:
fruits.push("lemon" * 4 times)
Run Code Online (Sandbox Code Playgroud) 编程是关于如何实现任何代码的决策.根据这些决定,代码将或多或少地具有可读性,高效性,复杂性等.一个常见的决定也是或多或少地习惯,即使用特定语句或您的编程语言或范例.
作为概念验证,我在Javascript中开发了两个代码片段来分析性能.我们的目标是产生以下形式的字符串tagA|tagB|tagC,其中则数tagX是随机的,后缀A,B,C是随机的整数.而且,tagX不能重演.
第一种实现更惯用,而第二种更传统.接下来是每个代码片段:
成语:
performance.mark('A');
let tags = new Set(Array.from({length: tagCount}, () => Math.floor(Math.random() * 10)));
tags = Array.from(tags).map(x => `tag${x}`).join('|');
performance.mark('B');
Run Code Online (Sandbox Code Playgroud)
传统
performance.mark('C');
let tagset = new Set();
let tagstr = "";
for (let tag=0; tag<tagCount; tag++) {
tagset.add(Math.floor(Math.random() * 10));
}
tagset.forEach((tag) => {
tagstr += 'tag' + tag + '|'
});
tagstr = tagstr.slice(0, -1);
performance.mark('D');
Run Code Online (Sandbox Code Playgroud)
为了衡量性能,我使用了Performance Timing API
结果有点令人沮丧,至少对我而言.请注意传统方式如何比其他方式更有效.
Idiomatic: 0.436535
Traditional: 0.048177 …Run Code Online (Sandbox Code Playgroud)