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.

Veja também

Referências