Fator de carga de tabela hash
O fator de carga de uma tabela hash é o número de itens armazenados dividido pela quantidade de buckets alocados.
Executar grátis
Esta calculadora faz essa operação, compara o resultado com o limite que você escolher e informa se o redimensionamento é recomendável. Ela também estima a quantidade mínima de buckets que deixaria os itens atuais estritamente abaixo do limite. Use a ferramenta para revisar uma implementação, planejar capacidade, verificar o estado observado de uma tabela ou transformar uma política de redimensionamento em um teste automatizado e repetível.
Calcule o fator de carga com contagens coerentes
Informe a quantidade de itens armazenados atualmente e o número de buckets alocados. A calculadora divide a contagem de itens pela de buckets; assim, 600 itens distribuídos em 800 buckets resultam em fator de carga 0.75, ou 75%. Conte entradas lógicas, e não buckets ocupados: duas entradas que colidem e compartilham um bucket ainda contam como dois itens. Da mesma forma, use a capacidade real de buckets da tabela, não apenas aqueles que contêm algum item. Essas definições precisam permanecer coerentes porque o fator representa a média de entradas por bucket, e não a porcentagem de buckets não vazios. A contagem de itens pode ser zero, mas a de buckets deve ser um inteiro positivo, pois a divisão por zero não descreve um estado válido. Faça cálculos separados para tabelas, shards ou partições independentes. Somar as contagens pode esconder uma partição sobrecarregada atrás da capacidade ociosa de outra, mesmo que a relação geral pareça aceitável. O decimal e a porcentagem retornados representam a mesma relação em formatos adequados para código e relatórios.
Escolha e interprete o limite de redimensionamento
O limite é o fator de carga no qual sua política determina um redimensionamento. O padrão é 0.75, mas você pode fornecer qualquer valor finito e positivo compatível com o projeto. Tabelas com endereçamento aberto geralmente precisam de limite abaixo de 1, pois cada item ocupa uma posição e as sequências de sondagem aumentam à medida que os espaços livres desaparecem. Implementações com encadeamento separado podem operar acima de 1 porque vários itens podem compartilhar um bucket, embora o custo das colisões tenda a crescer junto com a relação. A calculadora não presume uma estratégia de colisão; ela aplica o limite informado. A fronteira é inclusiva: o redimensionamento é recomendado quando o fator não arredondado é igual ou superior ao limite. A comparação usa o valor completo, enquanto o fator exibido é arredondado para garantir uma saída estável. Isso impede que o arredondamento visual altere a decisão perto da fronteira. Considere o resultado uma avaliação da política declarada, e não uma prova de que um único limite seja ideal para toda carga, função hash, orçamento de memória ou meta de latência.
Transforme o resultado em uma decisão de capacidade
Quando o redimensionamento é recomendado, o resultado inclui o menor número matemático de buckets que colocaria os itens atuais estritamente abaixo do limite escolhido. O cálculo toma a parte inteira inferior da divisão da quantidade de itens pelo limite e soma um. A saída também informa quantos buckets adicionais isso representa em relação à alocação atual. Trata-se de um mínimo definido pela política, não necessariamente da capacidade exata que sua implementação deve alocar. Muitas tabelas crescem geometricamente, frequentemente dobrando a capacidade; outras exigem uma potência de dois, um número primo ou uma capacidade aceita por um alocador fixo. Arredonde o mínimo para cima até o próximo tamanho válido e considere inserções futuras para evitar que a tabela cruze o limite logo em seguida. Se o redimensionamento não for indicado, os buckets adicionais serão zero, mesmo que o mínimo calculado seja menor que a alocação existente. Em automações, use o indicador booleano como condição estável e preserve contagens, limite e fator nos registros. A API determinística custa US$ 0,002 por solicitação e usa o mesmo cálculo disponível no navegador.
Casos de uso
Revisar uma implementação de tabela hash
Compare um retrato da tabela com o limite de crescimento documentado e confirme o comportamento exato na fronteira.
Planejar um aumento de capacidade
Estime o mínimo de buckets necessário para os itens atuais antes de arredondar para um tamanho de alocação compatível.
Automatizar uma regra de monitoramento
Converta métricas de itens e buckets em um indicador determinístico para painel, teste ou alerta operacional.
Perguntas frequentes
Como o fator de carga de uma tabela hash é calculado?
Divida o número de itens armazenados pela quantidade de buckets alocados. Para expressar em porcentagem, multiplique o resultado por cem.
Um fator exatamente igual ao limite exige redimensionamento?
Sim. A calculadora recomenda redimensionar quando o fator não arredondado é igual ou superior ao limite escolhido.
O fator de carga pode ser maior que um?
Sim, em projetos como encadeamento separado, nos quais vários itens podem ocupar um bucket. Alguns projetos com endereçamento aberto não armazenam mais itens do que posições.
Por que a quantidade sugerida nem sempre é uma potência de dois?
Ela é o mínimo matemático para permanecer estritamente abaixo do limite. Arredonde para cima até uma capacidade aceita pela implementação.
A contagem de itens pode ser zero?
Sim. Uma tabela vazia tem fator de carga zero, mas a quantidade de buckets precisa ser maior que zero.
Quanto custa o cálculo por API?
O preço da API é US$ 0,002 por solicitação. O mesmo cálculo determinístico está disponível no navegador para uma verificação imediata.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"item_count": 600,
"bucket_count": 800
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hash_load_factor",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |