正規表現をliteralではなく変数で表現する場合、幾つか方法がありますが、果たして速度にどれほどの差があるのでしょうか。RegExpを筆頭にeval、Functionで検証してみます。
for(let a=4,n=1e4,v0="(?:)",v1="/(?:)/g",v2="return/(?:)/g";a--;){
console.time`Reg`;
for(let a=n;a--;)RegExp(v0,"g");
console.timeEnd`Reg`
console.time`eval`;
for(let a=n;a--;)eval(v1);
console.timeEnd`eval`;
console.time`fn`;
for(let a=n;a--;)Function(v2)();
console.timeEnd`fn`;
}
Functionは全く使い物にならない程度に圧倒的な低速っぷり。これは想定内です。evalはFunctionを遥かに凌駕しない程度の速度を誇ります。RegExpはそんなevalより数十倍高速です。evalにはもっと期待していたので残念と言う他ありません。なぜならcode golfにevalは欠かせないのだ!