Skip to content

Instantly share code, notes, and snippets.

@triacontane
Last active September 23, 2019 13:59
Show Gist options
  • Save triacontane/8c911a9611b17438cc652abbcfb8d6d4 to your computer and use it in GitHub Desktop.
Save triacontane/8c911a9611b17438cc652abbcfb8d6d4 to your computer and use it in GitHub Desktop.
正規表現オブジェクトの生成速度に関する計測(RPGツクールMV v1.6.2)
// 文字列を与えてRegExpを生成(11ms)
console.time();
for (var i = 0; i < 10000; i++) {
var regexp = new RegExp('.*');
}
console.timeEnd();
// 正規表現リテラルで生成(7ms)
console.time();
for (var i = 0; i < 10000; i++) {
var regexp = /.*/;
}
console.timeEnd();
// あらかじめ生成して使い回し(8ms)
console.time();
var regexp = /.*/;
for (var i = 0; i < 10000; i++) {
var regexp2 = regexp;
}
console.timeEnd();
// 正規表現リテラルを与えてRegExpを生成(11ms)
console.time();
for (var i = 0; i < 10000; i++) {
var regexp = new RegExp(/.*/);
}
console.timeEnd();
// ただの数値を初期化(6ms)
console.time();
for (var i = 0; i < 10000; i++) {
var regexp = 1;
}
console.timeEnd();
@triacontane
Copy link
Author

実行例(誤差は+-0.5ms程度。実行順の違いによる変化なし)
default: 12.177978515625ms
default: 7.545166015625ms
default: 8.549072265625ms
default: 11.635986328125ms
default: 6.84326171875ms

@triacontane
Copy link
Author

1フレームに何度も実行する場合、可能な限り正規表現リテラルの使用が望ましい。
ループごとにリテラルを定義する方が使い回すより若干高効率?
正規表現リテラルを与えてRegExpを生成するのは無意味なので注意。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment