Signatur
Beschreibung
console.timeLog() schreibt den aktuellen Stand eines laufenden Timers in die Konsole. Der Timer muss vorher mit console.time(label) gestartet worden sein. Anders als console.timeEnd() läuft der Timer danach weiter. So kannst du Zwischenzeiten messen, etwa für einzelne Phasen eines längeren Ablaufs.
Die Ausgabe hat typischerweise die Form label: 123.456ms. Alle weiteren Argumente nach dem Label werden hinter der Zeitangabe mit ausgegeben, genau wie bei console.log(). Damit kannst du zu jeder Zwischenzeit auch einen Status oder Kontext mitloggen.
Die Methode eignet sich gut für schnelles Profiling beim Entwickeln: Ladezeiten, Schleifendurchläufe oder die einzelnen Schritte einer Kette von await-Aufrufen. Für genaue, auswertbare Messungen im Produktivcode sind performance.now() oder performance.mark()/performance.measure() besser geeignet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $label | string | "default" | Name des Timers, dessen Zwischenzeit ausgegeben werden soll. Er muss mit dem Label bei console.time() übereinstimmen. Andere Werte werden in einen String umgewandelt. |
| $...data | any | Beliebige weitere Werte, die hinter der Zeitangabe ausgegeben werden (wie bei console.log()). |
Beispiele
Zwischenzeiten einer Schleife messen
console.time('verarbeitung');
const daten = Array.from({ length: 300_000 }, (_, i) => i);
const quadrate = daten.map((n) => n * n);
console.timeLog('verarbeitung', 'map fertig');
const gerade = quadrate.filter((n) => n % 2 === 0);
console.timeLog('verarbeitung', 'filter fertig', gerade.length);
console.timeEnd('verarbeitung');
Phasen eines asynchronen Ladevorgangs
const ladeBenutzer = async (id) => {
const label = `benutzer-${id}`;
console.time(label);
const antwort = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`);
console.timeLog(label, 'Antwort erhalten, Status:', antwort.status);
const benutzer = await antwort.json();
console.timeLog(label, 'JSON geparst');
console.timeEnd(label);
return benutzer;
};
ladeBenutzer(1).then((b) => console.log(b.name));
Standard-Timer ohne Label
console.time();
setTimeout(() => {
console.timeLog(); // nutzt das Label "default"
console.timeEnd();
}, 500);
// Wichtig · Fallstricke
- Timer nicht gestartet: Gibt es keinen laufenden Timer mit dem Label, wird nur eine Warnung ausgegeben (z. B.
Timer "x" does not exist). Es wird kein Fehler geworfen. - Label genau gleich schreiben: Groß- und Kleinschreibung zählen.
'Laden'und'laden'sind zwei verschiedene Timer. - Nach
timeEnd()ist der Timer gelöscht. Ein weiterertimeLog()-Aufruf ergibt nur eine Warnung. - Das Ausgabeformat ist nicht festgelegt. Die Anzahl der Nachkommastellen und der Zusatztext unterscheiden sich zwischen Browsern und Node.js. Parse die Ausgabe also nicht maschinell.
- Pro Seite bzw. Kontext sind in Browsern bis zu etwa 10.000 gleichzeitige Timer möglich.
- Die Genauigkeit kann aus Sicherheitsgründen gedrosselt sein (Schutz vor Timing-Angriffen). Wenn es auf genaue Werte ankommt, nutze
performance.now(). - Kompatibilität: Chrome 71+, Firefox 62+, Safari 13+, Edge 79+, Node.js 10.7+. Sehr alte Browser kennen nur
time()/timeEnd().