Um programa ligado a computação é um programa cujo tempo de execução é determinado principalmente pela quantidade de computação que ele executa, e não pela quantidade de operações de E/S (entrada/saída) que ele precisa fazer. Em outras palavras, passa a maior parte de seus números de troca de tempo, realizando cálculos ou outras tarefas intensivas em CPU e relativamente pouco tempo aguardando os dados a serem lidos ou gravados em disco, rede ou outros recursos externos.
Aqui está um colapso:
*
Computação pesada: O núcleo do programa envolve operações matemáticas complexas, simulações, processamento de dados ou outros algoritmos computacionalmente exigentes. Pense em coisas como:
* Simulações científicas (previsão do tempo, dinâmica molecular)
* Treinamento de modelo de aprendizado de máquina
* Operações criptográficas
* Processamento de imagem/vídeo (especialmente de alta resolução)
* Análise de dados envolvendo grandes conjuntos de dados
*
i/o-limitado (contraste): Por outro lado, um programa de E/S passa a maior parte do tempo aguardando a conclusão das operações de E/S. Exemplos incluem:
* Servidores da Web (aguardando solicitações)
* Aplicativos de banco de dados (aguardando leituras/gravações em disco)
* Programas que dependem muito da comunicação de rede
Características-chave dos programas ligados a computação: *
Utilização de alta CPU: Durante a execução, a CPU será próxima de 100% utilizada.
*
Execução lenta: Mesmo com hardware poderoso, o programa levará uma quantidade considerável de tempo para concluir devido à complexidade inerente aos cálculos.
*
melhorou com processadores mais rápidos: O tempo de execução pode ser significativamente reduzido usando uma CPU com maior velocidade de relógio, mais núcleos ou melhores recursos de vetorização. Adicionar mais RAM também pode ajudar se o conjunto de trabalho do programa exceder a memória disponível.
*
menos afetado por E/S mais rápida: A atualização para armazenamento mais rápido ou hardware de rede terá um impacto relativamente menor no tempo geral de execução.
Identificar se um programa é ligado a computação ou ligado à E/S é importante para a otimização do desempenho. Para programas ligados a computação, o foco deve estar em otimizar algoritmos, usando técnicas de processamento paralelo e potencialmente empregar hardware especializado como as GPUs. Para programas de E/S, o foco mudaria para otimizar as consultas de banco de dados, usar armazenamento mais rápido e melhorar a comunicação de rede.