Start · Sprachen · JavaScript · Referenz · console.timeLog()

console.timeLog()

Methode

Gibt die bisher verstrichene Zeit eines mit <code>console.time()</code> gestarteten Timers aus, ohne ihn zu stoppen – optional mit zusätzlichen Werten.

seit JavaScript Baseline: alle modernen Browser (seit 2019), Node. Kategorie: webapi

Signatur

console.timeLog(label, ...data)

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');
verarbeitung: 8.123ms map fertig verarbeitung: 14.502ms filter fertig 150000 verarbeitung: 14.731ms - timer ended

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));
benutzer-1: 182.4ms Antwort erhalten, Status: 200 benutzer-1: 185.1ms JSON geparst benutzer-1: 185.3ms - timer ended Leanne Graham

Standard-Timer ohne Label

console.time();
setTimeout(() => {
  console.timeLog(); // nutzt das Label "default"
  console.timeEnd();
}, 500);
default: 501.2ms default: 501.6ms - timer ended

// 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 weiterer timeLog()-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().