Latihan 1: Flame Graphs & CPU Profiling — Debugging

Latihan 1 dari materi Flame Graphs & CPU Profiling di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Profil CPU di latihan ini berbentuk array Bottom-up: tiap isinya { name, totalMs, selfMs }. Tulis empat function untuk membacanya. Function yang mengembalikan daftar cukup mengembalikan array nama.

  1. topBySelf(profile, n): n function dengan selfMs terbesar, urut dari yang terbesar.
  2. topByTotal(profile, n): n function dengan totalMs terbesar, urut dari yang terbesar.
  3. findHotspots(profile, minSelfMs): semua function dengan selfMs >= minSelfMs, urut dari selfMs terbesar.
  4. selfTimePercent(profile, name): persen selfMs milik function name terhadap jumlah selfMs semua function, dibulatkan dengan Math.round. Kalau name gak ada, kembalikan 0.

Array profile dan lima console.log di kode awal biarkan saja. Yang dinilai lima baris console-nya, berurutan:

compile,parseJSON
main,renderPage
compile,parseJSON,loadAsset
40
0

Ada juga cek dengan profil lain, a (total 90, self 9), b (40, 31), c (25, 22), d (15, 15): topByTotal dengan n 2 harus ["a", "b"], dan findHotspots dengan batas 15 harus ["b", "c", "d"].

Hint