Lastfaktor einer Hashtabelle berechnen
Der Lastfaktor einer Hashtabelle ergibt sich aus der Anzahl gespeicherter Elemente geteilt durch die Anzahl zugewiesener Buckets.
Im Browser ausführen – kostenlos
Dieser Rechner führt die Berechnung aus, vergleicht das Ergebnis mit einem von Ihnen gewählten Schwellenwert und empfiehlt bei Bedarf eine Größenänderung. Zusätzlich ermittelt er die kleinste Bucket-Anzahl, mit der die aktuellen Elemente den Grenzwert sicher unterschreiten. Nutzen Sie das Werkzeug zur Prüfung einer Implementierung, zur Kapazitätsplanung, zur Bewertung eines beobachteten Tabellenzustands oder um eine Resize-Richtlinie in einen wiederholbaren automatisierten Test zu überführen.
Lastfaktor mit konsistenten Zählwerten berechnen
Geben Sie die Zahl der momentan gespeicherten Elemente und die Zahl der zugewiesenen Buckets ein. Der Rechner teilt die Elementanzahl durch die Bucket-Anzahl. 600 Elemente in 800 Buckets ergeben daher einen Lastfaktor von 0.75 beziehungsweise 75%. Zählen Sie logische Einträge und nicht belegte Buckets: Zwei kollidierende Einträge in demselben Bucket gelten weiterhin als zwei Elemente. Verwenden Sie außerdem die tatsächliche Bucket-Kapazität der Tabelle und nicht nur die Zahl der Buckets, die gerade einen Eintrag enthalten. Diese Definitionen müssen konsistent bleiben, denn der Lastfaktor beschreibt die durchschnittlichen Einträge je Bucket und nicht den Anteil nicht leerer Buckets. Die Elementanzahl darf null sein; die Bucket-Anzahl muss jedoch eine positive Ganzzahl sein, da eine Division durch null keinen Tabellenzustand darstellen kann. Berechnen Sie unabhängige Tabellen, Shards oder Partitionen getrennt. Zusammengefasste Werte können eine stark belastete Partition hinter freien Kapazitäten anderer Bereiche verbergen. Der ausgegebene Dezimalwert und Prozentsatz beschreiben dasselbe Verhältnis in Formaten für Programmcode und Berichte.
Schwellenwert für die Größenänderung festlegen
Der Schwellenwert ist der Lastfaktor, bei dem Ihre Richtlinie eine Größenänderung vorsieht. Standardmäßig gilt 0.75; Sie können jedoch jeden endlichen positiven Wert angeben, der zum Tabellenentwurf passt. Tabellen mit offener Adressierung benötigen häufig einen Wert unter 1, weil jedes Element einen Platz belegt und Suchfolgen länger werden, wenn freie Plätze verschwinden. Implementierungen mit separater Verkettung können über 1 arbeiten, da mehrere Elemente einen Bucket teilen dürfen. Dennoch steigen die Kollisionskosten meist mit dem Verhältnis. Der Rechner setzt keine Kollisionsstrategie voraus, sondern wendet Ihren Wert an. Die Grenze wird eingeschlossen: Eine Größenänderung wird empfohlen, wenn der ungerundete Lastfaktor gleich dem Schwellenwert oder größer ist. Für den Vergleich wird der vollständige Wert genutzt; nur die Anzeige wird für eine stabile Ausgabe gerundet. So beeinflusst eine optische Rundung keine grenznahe Entscheidung. Verstehen Sie das Ergebnis als Prüfung einer festgelegten Richtlinie und nicht als Beleg dafür, dass derselbe Grenzwert für jede Arbeitslast, Hashfunktion, Speichergrenze oder Latenzvorgabe optimal wäre.
Aus dem Ergebnis eine Kapazitätsentscheidung ableiten
Wenn eine Größenänderung empfohlen wird, enthält das Ergebnis die mathematisch kleinste Bucket-Anzahl, bei der die vorhandenen Elemente den gewählten Schwellenwert sicher unterschreiten. Dazu wird der Quotient aus Elementanzahl und Schwellenwert abgerundet und anschließend um eins erhöht. Die Ausgabe nennt außerdem die zusätzlich zur aktuellen Zuweisung erforderlichen Buckets. Dieser Wert ist ein richtlinienbezogenes Minimum, aber nicht zwingend die exakte Kapazität für Ihre Implementierung. Viele Hashtabellen wachsen geometrisch und verdoppeln ihre Kapazität; andere verlangen eine Zweierpotenz, eine Primzahl oder eine von einem festen Speicherverfahren unterstützte Größe. Runden Sie das Minimum auf die nächste zulässige Kapazität auf und berücksichtigen Sie erwartete Einfügungen, damit die Tabelle den Grenzwert nicht sofort erneut erreicht. Wird keine Änderung empfohlen, beträgt der Zusatzbedarf null, auch wenn das berechnete Minimum unter der vorhandenen Zuweisung liegt. Verwenden Sie bei Automatisierungen das boolesche Resize-Signal als stabile Bedingung und protokollieren Sie Zählwerte, Schwelle und Faktor. Die deterministische API kostet $0.002 pro Anfrage und nutzt dieselbe Berechnung wie der Browser.
Anwendungsfälle
Implementierung einer Hashtabelle prüfen
Vergleichen Sie einen Tabellenzustand mit der dokumentierten Wachstumsgrenze und kontrollieren Sie das genaue Verhalten am Grenzwert.
Kapazitätserhöhung planen
Ermitteln Sie die nötige Mindestzahl an Buckets, bevor Sie auf eine von Ihrer Implementierung unterstützte Zuweisungsgröße aufrunden.
Überwachungsregel automatisieren
Wandeln Sie Element- und Bucket-Metriken in ein deterministisches Signal für Dashboard, Test oder Betriebswarnung um.
Häufige Fragen
Wie wird der Lastfaktor einer Hashtabelle berechnet?
Teilen Sie die Zahl der gespeicherten Elemente durch die Zahl der zugewiesenen Buckets. Multiplizieren Sie das Ergebnis für eine Prozentangabe mit hundert.
Erfordert ein Lastfaktor genau am Grenzwert bereits eine Änderung?
Ja. Der Rechner empfiehlt sie, wenn der ungerundete Faktor gleich dem gewählten Schwellenwert oder größer ist.
Kann der Lastfaktor größer als eins sein?
Ja, etwa bei separater Verkettung, wenn mehrere Elemente einen Bucket belegen. Manche Verfahren mit offener Adressierung können nicht mehr Elemente als Plätze speichern.
Warum ist die vorgeschlagene Zahl nicht immer eine Zweierpotenz?
Sie ist das mathematische Minimum zum sicheren Unterschreiten der Schwelle. Runden Sie sie auf eine von Ihrer Implementierung unterstützte Kapazität auf.
Darf die Elementanzahl null betragen?
Ja. Eine leere Tabelle besitzt den Lastfaktor null; die Bucket-Anzahl muss trotzdem größer als null sein.
Was kostet die Berechnung über die API?
Der API-Preis beträgt $0.002 pro Anfrage. Für eine sofortige manuelle Prüfung steht dieselbe deterministische Berechnung im Browser bereit.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/hash-load-factor \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"item_count":600,"bucket_count":800}'const res = await fetch("https://api.kit.forhosting.com/dev/hash-load-factor", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"item_count": 600,
"bucket_count": 800
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/hash-load-factor",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"item_count": 600,
"bucket_count": 800
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/hash-load-factor", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"item_count":600,"bucket_count":800}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"item_count":600,"bucket_count":800}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/hash-load-factor", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"item_count": 600,
"bucket_count": 800
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hash_load_factor",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |