背景
文字列の連結には、テンプレートリテラルか文字列連結を使うかいずれかの方法がある。可読性的にはテンプレートリテラルの方が良いが、パフォーマンス的には単なる文字列連結の方が良い。
実際にどれぐらい差があるのか比較してみる。
文字列の連結には、テンプレートリテラルか文字列連結を使うかいずれかの方法がある。可読性的にはテンプレートリテラルの方が良いが、パフォーマンス的には単なる文字列連結の方が良い。
実際にどれぐらい差があるのか比較してみる。
以下の3つの方法で文字列を連結するコードをベンチマークする。
const url = `/${slug}.html`;
const url = '/' + slug + '.html';
const url = ['/', slug, '.html'].join('');
各手法で100万回の文字列連結し、その処理速度を測定する。
const slug = '1234567890';
// Template Literal
for (let i = 0; i < 1000000; i++) {
const url = `/${slug}.html`;
}
// String Concatenation
for (let i = 0; i < 1000000; i++) {
const url = '/' + slug + '.html';
}
// String Concatenation with Array
for (let i = 0; i < 1000000; i++) {
const url = ['/', slug, '.html'].join('');
}
JavaScriptエンジが異なる3つのブラウザでそれぞれベンチマークを実行した。
複数回実行した結果、大きなブレがなかったため平均値ではなく、いくつかのサンプリングの中の1つを表記する。
Benchmark: Template literals vs String concat vs Array.join()
方法 | 計測結果 |
---|---|
テンプレートリテラル | 481 ops/sec ±0.24% (66 runs sampled) |
文字列連結 | 835 ops/sec ±0.93% (59 runs sampled) |
配列を使った文字列連結 | 20.83 ops/sec ±0.62% (39 runs sampled) |
文字列連結が最速、配列を使った文字列連結が最遅。
方法 | 計測結果 |
---|---|
テンプレートリテラル | 698 ops/sec ±0.55% (66 runs sampled) |
文字列連結 | 2,369 ops/sec ±0.93% (64 runs sampled) |
配列を使った文字列連結 | 30.12 ops/sec ±0.81% (42 runs sampled) |
文字列連結が最速、配列を使った文字列連結が最遅。
方法 | 計測結果 |
---|---|
テンプレートリテラル | 3,417 ops/sec ±0.39% (22 runs sampled) |
文字列連結 | 3,412 ops/sec ±0.17% (22 runs sampled) |
配列を使った文字列連結 | 21.88 ops/sec ±0.58% (40 runs sampled) |
テンプレートリテラルと文字列連結はほぼ同じ速度(複数回ベンチマーク実行で逆転はあれど実行回数に差は出ず)。配列を使った文字列連結が最遅。
テンプレートリテラルの実行が最適化されている可能性がある。