Como saber quais programas suportam fluxo de E / S

1

Pelo que entendi, programas que suportam E / S de fluxo podem trabalhar com arquivos mais do que o tamanho da memória. Está correto?

Existe uma maneira de saber quais programas suportam E / S de streaming?

    
por utlamn 31.08.2015 / 00:22

1 resposta

6

if a program supports streaming I/O it can work with files more than the size of the memory, is this correct

Geralmente sim, mas não necessariamente. Imagine um programa, como uniq , mas mais sofisticado, que conta o número de ocorrências de cada linha única que recebe em sua entrada. Ao contrário de uniq , ele gera um total em execução do número de ocorrências vistas até o momento. Por isso, conta como streaming porque produz saída incrementalmente se recebe entrada. Mas se cada linha da entrada é única ou próxima a ela, ela precisa se lembrar de cada linha diferente em uma estrutura de dados para manter as contagens em execução e não conseguirá lidar com um arquivo maior que a memória.

Also is there a way to know which programs support streaming I/O ?

Não, a menos que esteja documentado ou a menos que você possa verificá-lo, não, porque depende do que o programa faz.

Você pode fazer algo próximo, no entanto: você pode testar se o programa precisa de um arquivo de entrada pesquisável. Alguns programas aceitam um pipe ou um arquivo regular (ou socket ou outra coisa) como entrada. Outros só podem aceitar um arquivo regular. Se um programa insistir em um arquivo regular e pesquisável, há uma boa chance de ele não fazer nenhum tipo de streaming. Se permitir um pipe como entrada, há uma boa chance de que isso aconteça. Mas há exceções. Por exemplo, sort permite um pipe como sua entrada, mas não faz streaming: ele só gera qualquer saída após o final da entrada.

    
por 31.08.2015 / 00:47

Tags