Profiloinnin johdanto (Node/DevTools) — pienet ajoitusmenetelmät
Profiloi pienin askelin: mittaa console.timella ja timeEndillä sekä yksinkertaisilla ajastimilla, etsi kuuma koodi, muuta yhtä asiaa ja mittaa uudelleen
Profiloinnin johdanto (Node/DevTools) — pienet ajoitusmenetelmät on ilmainen JavaScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/3. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu JavaScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. JavaScript Academy-kurssilla on yhteensä 3 oppituntia.
Miksi profiloida?
Tavoite: Mitatkaa → muuttakaa → mitatkaa uudelleen.
- Käyttäkää nopeaan ajan mittaamiseen console.time/timeEnd-funktioita
- Käyttäkää pientä now()-apufunktiota manuaalisiin mittauksiin
- Keskittykää vain kuumaan koodiin
- Tehkää yksi muutos kerrallaan

console.time-esimerkki
console.time tulostaa, kuinka kauan nimetyn lohkon suorittaminen kesti. Se on hyvä ensimmäinen askel.
// Measure a small loop with console.time/timeEnd
console.time("sum");
let s = 0;
for (let i = 0; i < 100000; i = i + 1) {
s = s + i;
}
console.timeEnd("sum");
console.log("sum value:", s);

Manuaalinen ajanmittauksen apufunktio
Manuaalinen ajanmittaus auttaa ympäröimään minkä tahansa funktion ja vertaamaan suorituskertoja samalla syötteellä.
// A tiny now() helper that works in many runtimes
const now = (typeof performance !== "undefined" && performance.now)
? function () { return performance.now(); }
: function () { return Date.now(); };
// Time a function manually
function timeFn(label, fn) {
const t1 = now();
const out = fn();
const t2 = now();
console.log(label + " ms:", (t2 - t1));
return out;
}
timeFn("small work", function () {
let x = 0;
for (let i = 0; i < 50000; i = i + 1) { x = x + i; }
return x;
});

Etsikää kuuma koodi
Seuratkaa kutsuja ja aikaa selvittääksenne, mihin sovelluksen työaika kuluu. Optimoikaa ensin kuumin funktio.
// Count calls and total time to find hot spots
const metrics = { calls: 0, totalMs: 0 };
function hotWork(n) {
const t1 = now();
let sum = 0;
for (let i = 0; i < n; i = i + 1) {
sum = sum + (i % 3);
}
const t2 = now();
metrics.calls = metrics.calls + 1;
metrics.totalMs = metrics.totalMs + (t2 - t1);
return sum;
}
// Simulate usage
for (let k = 0; k < 5; k = k + 1) {
hotWork(80000);
}
console.log("calls:", metrics.calls, "avg ms:", metrics.totalMs / metrics.calls);

Ajanmittaus ennen muutosta ja sen jälkeen
Mitatkaa ennen muutosta ja sen jälkeen. Käyttäkää samaa syötettä ja verratkaa vain lukuja.
// Compare two approaches with the same input
const hay = [];
for (let i = 0; i < 2000; i = i + 1) { hay.push(String(i)); }
const needles = [];
for (let i = 0; i < 1000; i = i + 1) { needles.push(String(i * 2)); }
function slowIncludes() {
let count = 0;
for (const n of needles) {
if (hay.includes(n)) { count = count + 1; }
}
return count;
}
function fastSet() {
const set = new Set(hay);
let count = 0;
for (const n of needles) {
if (set.has(n)) { count = count + 1; }
}
return count;
}
const c1 = timeFn("includes run", slowIncludes);
const c2 = timeFn("set.has run", fastSet);
console.log("counts:", c1, c2);

Hyvät ajanmittauksen käytännöt
Vinkkejä:
- Käyttäkää samoja syötteitä eri suorituskerroilla.
- Suorittakaa ohjelma kerran lämmittelyksi ja mitatkaa vasta sen jälkeen.
- Vähentäkää lokitulostusta mittauksen ajaksi.
- Muuttakaa yhtä asiaa ja mitatkaa uudelleen.
- DevToolsissa ja Nodessa on tallennustyökaluja. Aloittakaa yksinkertaisella console.time-funktiolla.

console.time-perusteiden tietovisa
Pikatarkistus: Nopea ajanmittaustyökalu.

Kertaus
Kertaus: Aloittakaa console.time-funktiolla ja pienellä now()-apufunktiolla. Etsikää kuuma koodi, tehkää yksinkertainen muutos ja mitatkaa uudelleen samoilla syötteillä.

Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 59
- Oppitunnit
- 200
Usein kysytyt kysymykset
Onko oppitunti ”Profiloinnin johdanto (Node/DevTools) — pienet ajoitusmenetelmät” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa JavaScript Academy-oppimispolun 3 oppituntia, myös oppitunnin “Profiloinnin johdanto (Node/DevTools) — pienet ajoitusmenetelmät”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. JavaScript Academy-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Profiloinnin johdanto (Node/DevTools) — pienet ajoitusmenetelmät”?
Profiloi pienin askelin: mittaa console.timella ja timeEndillä sekä yksinkertaisilla ajastimilla, etsi kuuma koodi, muuta yhtä asiaa ja mittaa uudelleen Harjoittelet JavaScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni JavaScript Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin JavaScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/3.
Kuinka kauan ”Profiloinnin johdanto (Node/DevTools) — pienet ajoitusmenetelmät”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä JavaScript Academy-oppitunnilla?
Kyllä. Jokainen JavaScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Big-O-perusteet ja kuumat sekä kylmät suorituspolut
- Vuotojen välttäminen — sulkeumat, ajastimet ja viittaukset
- Profiloinnin johdanto (Node/DevTools) — pienet ajoitusmenetelmät