Overhead (computação) - Overhead (computing)
Em ciência da computação , sobrecarga é qualquer combinação de tempo de computação em excesso ou indireto, memória, largura de banda ou outros recursos necessários para executar uma tarefa específica . É um caso especial de sobrecarga de engenharia . As despesas gerais podem ser um fator decisivo no design de software, no que diz respeito à estrutura, correção de erros e inclusão de recursos. Exemplos de sobrecarga de computação podem ser encontrados em programação funcional , transferência de dados e estruturas de dados.
Design de software
Escolha de implementação
Um programador / engenheiro de software pode ter uma escolha de vários algoritmos , codificações , tipos de dados ou estruturas de dados , cada um dos quais com características conhecidas. Ao escolher entre eles, seus respectivos overheads também devem ser considerados.
Tradeoffs
Na engenharia de software , a sobrecarga pode influenciar a decisão de incluir ou não recursos em novos produtos, ou mesmo de corrigir bugs. Um recurso que tem uma alta sobrecarga pode não estar incluído - ou precisa de um grande incentivo financeiro para fazê-lo. Freqüentemente, mesmo que os fornecedores de software estejam bem cientes dos bugs em seus produtos, a recompensa por corrigi-los não vale a recompensa, por causa da sobrecarga.
Por exemplo, uma estrutura de dados implícita ou sucinta pode fornecer baixa sobrecarga de espaço, mas ao custo de desempenho lento (compensação de espaço / tempo).
Complexidade de tempo de execução do software
Complexidade algorítmica é geralmente especificado utilizando Big O notação . Isso não faz comentários sobre quanto tempo algo leva para ser executado ou quanta memória ele usa, mas como seu aumento depende do tamanho da entrada. A sobrecarga deliberadamente não faz parte desse cálculo, uma vez que varia de uma máquina para outra, enquanto o tempo de execução fundamental de um algoritmo não.
Isso deve ser contrastado com a eficiência algorítmica , que leva em consideração todos os tipos de recursos - uma combinação (embora não trivial) de complexidade e sobrecarga.
Exemplos
Programação de computador (tempo de execução e sobrecarga computacional)
Invocar uma função introduz uma pequena sobrecarga de tempo de execução. Às vezes, o compilador pode minimizar essa sobrecarga ao in- line algumas dessas chamadas de função .
Caches de CPU
Em um cache de CPU , o "tamanho do cache" (ou capacidade ) refere-se a quantos dados um cache armazena. Por exemplo, um "cache de 4 KB" é um cache que contém 4 KB de dados. Os "4 KB" neste exemplo excluem bits de overhead , como informações de quadro, endereço e tag.
Comunicações (sobrecarga de transferência de dados)
O envio confiável de uma carga útil de dados por uma rede de comunicações exige o envio de mais do que apenas a carga útil em si. Também envolve o envio de vários dados de controle e sinalização ( TCP ) necessários para chegar ao destino. Isso cria uma chamada sobrecarga de protocolo, pois os dados adicionais não contribuem para o significado intrínseco da mensagem.
Na telefonia , a discagem de números e o tempo de estabelecimento da chamada são despesas indiretas. Em rádios bidirecionais (mas semiduplex ), o uso de "over" e outra sinalização necessária para evitar colisões é uma sobrecarga.
A sobrecarga do protocolo pode ser expressa como uma porcentagem de bytes de não aplicativo ( sincronização de protocolo e quadro ) dividido pelo número total de bytes na mensagem.
Codificações e estruturas de dados (sobrecarga de tamanho)
A codificação de informações e dados também introduz sobrecarga. A data e a hora "2011-07-12 07:18:47" podem ser expressas como tempo Unix com o inteiro assinado de 32 bits , consumindo apenas 4 bytes . Representada como string codificada em UTF-8 formatada em ISO 8601, a data consumiria 19 bytes, uma sobrecarga de tamanho de 375% sobre a representação de inteiro binário. Como XML, esta data pode ser escrita da seguinte forma com um overhead de 218 caracteres, enquanto adiciona o contexto semântico de que é um CHANGEDATE com índice 1.
1310447927
2011-07-12 07:18:47
<?xml version="1.0" encoding="UTF-8"?>
<DATETIME qualifier="CHANGEDATE" index="1">
<YEAR>2011</YEAR>
<MONTH>07</MONTH>
<DAY>12</DAY>
<HOUR>07</HOUR>
<MINUTE>18</MINUTE>
<SECOND>47</SECOND>
</DATETIME>
Os 349 bytes, resultantes do XML codificado em UTF-8, se correlacionam a uma sobrecarga de tamanho de 8625% sobre a representação de inteiro original.