Signatur
Beschreibung
console.time() startet einen Timer mit einem frei wählbaren Namen (Label). Mit demselben Label gibt console.timeLog() einen Zwischenstand aus, ohne den Timer anzuhalten. console.timeEnd() gibt die Gesamtdauer in Millisekunden aus und beendet den Timer. Die Ausgabe hat meist die Form label: 12.345 ms.
Die Methode eignet sich für schnelle Messungen während der Entwicklung, etwa wie lange eine Schleife, ein Netzwerkaufruf oder das Rendern eines DOM-Abschnitts dauert. Es gibt keinen Rückgabewert: Die Zeit erscheint nur in der Konsole. Wenn der Code den Messwert selbst weiterverarbeiten soll, sind performance.now() oder performance.mark()/performance.measure() die bessere Wahl.
Auf einer Seite können bis zu 10.000 Timer gleichzeitig laufen. Jeder wird über sein Label angesprochen. Timer laufen global über den gesamten Konsolen-Kontext. Man kann sie also in einer Funktion starten und in einem Callback oder nach einem await beenden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $label | string | "default" | Name des Timers. Denselben Namen gibt man an console.timeLog() und console.timeEnd() weiter. Andere Werte werden in einen String umgewandelt. |
Rückgabewert
undefined zurück. Die gemessene Zeit erscheint nur in der Konsole.Beispiele
Dauer einer Schleife messen
console.time('sortieren');
const zahlen = Array.from({ length: 100_000 }, () => Math.random());
zahlen.sort((a, b) => a - b);
console.timeEnd('sortieren');
Asynchronen Fetch mit Zwischenständen messen
const ladeBenutzer = async () => {
console.time('api');
const res = await fetch('https://jsonplaceholder.typicode.com/users');
console.timeLog('api', 'Antwort erhalten, Status', res.status);
const daten = await res.json();
console.timeEnd('api');
return daten;
};
ladeBenutzer();
Mehrere Timer parallel und Standard-Label
console.time(); // Label "default"
console.time('dom');
for (let i = 0; i < 1000; i++) {
document.body.append(document.createElement('div'));
}
console.timeEnd('dom');
console.timeEnd(); // beendet "default"
// Wichtig · Fallstricke
- Doppeltes Label: Ruft man
console.time()mit einem Label auf, dessen Timer schon läuft, wird der Timer nicht neu gestartet. Stattdessen erscheint eine Warnung, zum BeispielTimer 'x' already exists. - Unbekanntes Label: Wird
console.timeEnd()oderconsole.timeLog()ohne vorher gestarteten Timer aufgerufen, erscheint ebenfalls nur eine Warnung. Es wird kein Fehler geworfen. - Genauigkeit: Aus Sicherheitsgründen (Schutz vor Timing-Angriffen wie Spectre) runden Browser die Zeit teils ab. Außerdem beeinflussen geöffnete Entwicklerwerkzeuge die Messung. Für aussagekräftige Benchmarks sollte man mehrfach messen und
performance.now()verwenden. - Ausgaben landen im Produktivcode auch in der Konsole der Nutzer. Messungen deshalb vor dem Ausliefern entfernen oder hinter ein Debug-Flag setzen.
- Kompatibilität: in allen modernen Browsern, in Web Workern und in Node.js verfügbar.
console.timeLog()gibt es erst seit etwa 2018 (Chrome 71, Firefox 62, Node.js 10).