Se a sobrescrita ou a criação de um novo arquivo é mais rápida depende do tipo de sistema de arquivos. Muitos sistemas de arquivos sobrescrevem dados de arquivos no lugar; então, a sobrescrita é mais rápida, pois exige apenas a gravação dos dados, enquanto a criação de um novo arquivo requer primeiro a alocação de espaço e a gravação dos dados no espaço recém-alocado. Eu não esperaria uma grande diferença embora. Alguns sistemas de arquivos não sobrescrevem um bloco existente (para permitir que uma gravação seja desfeita ) e, em seguida, sobrescrevem um O arquivo existente é feito escrevendo os novos dados, seguido da exclusão dos dados antigos. Eu não esperaria uma grande diferença em ambos os casos embora.
As camadas subjacentes podem ter efeitos semelhantes para tornar uma operação mais cara que a outra. Por exemplo, substituir em um sistema que mantém instantâneos mantém os dados antigos de modo que o instantâneo possa ser restaurado. A mídia Flash só pode ser apagada em massa para que novos dados sejam gravados em setores livres, mas a substituição de alguns dados acabará levando à sua liberação, o que leva tempo.
De longe, a coisa com o maior efeito no tempo de leitura e gravação é o armazenamento em buffer e o armazenamento em cache. Certifique-se de fazer seus benchmarks em uma configuração de cache conhecida (você deve provavelmente esvaziar o cache de disco antes de iniciar cada operação comparada) e termina com todos os buffers escritos (termine chamando sync
) a menos que você queira medir o cache quente / temporizações de buffers. Por exemplo, fazer duas gravações consecutivas em que a primeira gravação apenas grava em buffers de memória não custará muito mais do que fazer uma única gravação.
Em qualquer caso, se forem necessários 4s para realizar a operação desejada, serão necessários 4s. Não há maneira mágica de torná-lo 4 vezes mais rápido.