Facteur de charge d’une table de hachage
Le facteur de charge d’une table de hachage correspond au nombre d’éléments stockés divisé par le nombre de compartiments alloués.
Lancer gratuitement
Ce calculateur effectue cette opération, compare le résultat au seuil que vous choisissez et indique si un redimensionnement est conseillé. Il estime aussi le nombre minimal de compartiments qui placerait les éléments actuels strictement sous ce seuil. Utilisez-le pour examiner une implémentation, planifier la capacité, contrôler l’état observé d’une table ou transformer une politique de redimensionnement en test automatisé reproductible.
Calculez le facteur avec des décomptes cohérents
Saisissez le nombre d’éléments actuellement stockés et celui des compartiments alloués. Le calculateur divise le premier par le second : 600 éléments répartis dans 800 compartiments donnent ainsi un facteur de charge de 0.75, soit 75%. Comptez les entrées logiques plutôt que les compartiments occupés : deux entrées en collision dans un même compartiment restent deux éléments. Utilisez également la capacité réelle de la table, et non le seul nombre de compartiments contenant une entrée. Ces définitions doivent rester cohérentes, car le facteur décrit le nombre moyen d’entrées par compartiment et non le pourcentage de compartiments non vides. Le nombre d’éléments peut être nul, tandis que celui des compartiments doit être un entier positif : une division par zéro ne représente aucun état valide. Effectuez des calculs distincts pour des tables, shards ou partitions indépendants. L’agrégation peut masquer une partition très chargée derrière la capacité disponible ailleurs, même si le rapport global paraît acceptable. La valeur décimale et le pourcentage renvoyés expriment le même rapport sous des formes adaptées au code et aux rapports.
Choisissez et interprétez le seuil de redimensionnement
Le seuil est le facteur de charge auquel votre politique prévoit un redimensionnement. Sa valeur par défaut est 0.75, mais vous pouvez fournir toute valeur finie positive conforme à la conception de la table. Les tables à adressage ouvert nécessitent souvent un seuil inférieur à 1, puisque chaque élément occupe un emplacement et que les séquences de sondage s’allongent à mesure que les places libres disparaissent. Les implémentations par chaînage séparé peuvent fonctionner au-dessus de 1, plusieurs éléments pouvant partager un compartiment, même si le coût des collisions augmente généralement avec le rapport. Le calculateur ne présume aucune stratégie de collision : il applique le seuil fourni. La limite est inclusive, donc le redimensionnement est conseillé lorsque le facteur non arrondi est égal ou supérieur au seuil. La comparaison emploie la valeur complète, tandis que l’affichage arrondit le facteur afin de stabiliser la sortie. Cet écart empêche l’arrondi visuel de modifier une décision proche de la limite. Voyez le résultat comme l’évaluation d’une politique déclarée, pas comme la preuve qu’un seuil convient à toute charge, fonction de hachage, contrainte mémoire ou cible de latence.
Transformez le résultat en décision de capacité
Lorsqu’un redimensionnement est conseillé, le résultat fournit le plus petit nombre mathématique de compartiments qui placerait les éléments actuels strictement sous le seuil choisi. Il correspond à la partie entière inférieure du nombre d’éléments divisé par le seuil, augmentée de un. La sortie indique aussi le nombre de compartiments supplémentaires par rapport à l’allocation actuelle. Il s’agit d’un minimum imposé par la politique, pas nécessairement de la capacité exacte à allouer. De nombreuses tables grandissent géométriquement, souvent en doublant leur capacité ; d’autres exigent une puissance de deux, un nombre premier ou une valeur compatible avec un allocateur fixe. Arrondissez ce minimum vers le prochain format valable, puis anticipez les insertions prochaines afin de ne pas franchir aussitôt le seuil. Si aucun redimensionnement n’est conseillé, le supplément indiqué vaut zéro, même si le minimum calculé est inférieur à l’allocation existante. Pour automatiser la décision, utilisez l’indicateur booléen comme condition stable et conservez les décomptes, le seuil et le facteur dans les journaux. L’API déterministe coûte $0.002 par requête et applique le même calcul que le navigateur.
Cas d’usage
Examiner une table de hachage
Comparez un instantané de la table à son seuil de croissance documenté et vérifiez précisément le comportement à la limite.
Planifier une hausse de capacité
Estimez le minimum de compartiments requis pour les éléments actuels avant d’arrondir à une taille d’allocation prise en charge.
Automatiser une règle de surveillance
Convertissez les mesures d’éléments et de compartiments en indicateur déterministe pour un tableau de bord, un test ou une alerte.
Questions fréquentes
Comment calcule-t-on le facteur de charge d’une table de hachage ?
Divisez le nombre d’éléments stockés par celui des compartiments alloués. Multipliez le résultat par cent pour l’exprimer en pourcentage.
Un facteur exactement égal au seuil impose-t-il un redimensionnement ?
Oui. Le calculateur le conseille lorsque le facteur non arrondi est égal ou supérieur au seuil choisi.
Le facteur de charge peut-il dépasser un ?
Oui, notamment avec le chaînage séparé, où plusieurs éléments peuvent partager un compartiment. Certains modèles à adressage ouvert ne peuvent dépasser le nombre de places.
Pourquoi la valeur suggérée n’est-elle pas toujours une puissance de deux ?
Elle constitue le minimum mathématique pour rester strictement sous le seuil. Arrondissez-la vers une capacité acceptée par votre implémentation.
Le nombre d’éléments peut-il être nul ?
Oui. Une table vide possède un facteur de charge nul, mais elle doit compter plus de zéro compartiment.
Quel est le tarif du calcul par API ?
Le prix de l’API est de $0.002 par requête. Le même calcul déterministe est disponible dans le navigateur pour une vérification immédiate.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"item_count": 600,
"bucket_count": 800
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hash_load_factor",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |