Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)
Big-Oの感覚を身につけ、ホットパスに注目します。入れ子の走査をSet/Mapに置き換え、繰り返し処理を避け、小さく明快なコードを保ちます。
「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全3レッスンが含まれています。
全体像
目標: 複雑な理論を使わずに、すぐに改善します。
- Big-O の感覚: 二重ループを避けます
- ホットパスとコールドパス: 最も頻繁に実行される処理を最適化します
- 高速な検索には Set/Map を使います
- 一度だけ処理することで、結果を再利用します

ネストした走査はコストが高い
走査をネストすると処理量が増えます。各 includes が配列をもう一度走査するためです。
// Bad pattern: nested scan for membership (can be ~O(n^2))
const haystack = ["a","b","c","d","e"];
const needles = ["b","e","x"];
const foundSlow = [];
for (const n of needles) {
// includes scans the array each time
if (haystack.includes(n)) {
foundSlow.push(n);
}
}
console.log("slow found:", foundSlow);

メンバーシップ判定に Set を使う
Set を一度作成し、has で高速にメンバーシップを判定します。これにより内側の走査をなくせます。
// Better: build a Set once, then O(1)-ish checks (~O(n) overall)
const fastSet = new Set(haystack);
const foundFast = [];
for (const n of needles) {
if (fastSet.has(n)) {
foundFast.push(n);
}
}
console.log("fast found:", foundFast);

件数には Map を使う
Map に件数を保存すると、後で O(1) に近い計算量で読み取れます。配列を再走査して数え直す必要はありません。
// Build a frequency map once instead of scanning many times
const words = ["a","b","a","a","c","b"];
const freq = new Map();
for (const w of words) {
const old = freq.get(w) || 0;
freq.set(w, old + 1);
}
console.log("count a:", freq.get("a"));
console.log("count b:", freq.get("b"));

一度だけ行う(キャッシュ)
同じ値が繰り返し使われる場合は、結果をキャッシュしてください。初心者にも分かりやすいよう、キャッシュは小さく保ちます。
// Do work once and reuse (tiny cache)
function heavy(x) {
// pretend heavy math
return x * x + 1;
}
const cache = new Map();
function heavyCached(x) {
if (cache.has(x)) return cache.get(x);
const val = heavy(x);
cache.set(x, val);
return val;
}
console.log("first:", heavyCached(5));
console.log("second:", heavyCached(5)); // cached

ホットパスに集中する
ホットパス: 何度も実行される処理です(ここを最適化します)。コールドパス: まれにしか実行されないコードです(シンプルに保ちます)。
- ホットコードから内側のループを取り除きます。
- 頻繁なメンバーシップ判定や件数集計には Set/Map を使います。
- 計測は後で行い、まずは分かりやすさを優先します。

メンバーシップ最適化クイズ
簡単な確認: ネストした走査を減らします。

まとめ
まとめ: ネストした走査を避け、検索と件数集計には Set/Map を使い、処理は一度だけ行います。ホットパスに集中し、コールドコードはシンプルに保ちます。

よくある質問
「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」レッスンは無料ですか?
はい。「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。
「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」で何を学びますか?
Big-Oの感覚を身につけ、ホットパスに注目します。入れ子の走査をSet/Mapに置き換え、繰り返し処理を避け、小さく明快なコードを保ちます。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Big-Oの基礎、ホットパスとコールドパス(初心者向けの改善)
- メモリリークを避ける — クロージャ、タイマー、参照
- プロファイリング入門(Node/DevTools) — 小さな計測習慣