Impactos de persistir dados na memória secundário na estrutura de árvore
Como podemos ver as limitações das estruturas de árvore binário, BST e AVL dado a possível falta de memória ao trabalhar com um grande volume de dados, podemos pensar em ao invés de salvar na RAM, por exemplo, persistir em disco.
Porém quando fazemos isso, logo de cara enfrentamos um grande problema:
Note
Acesso sequencial a arquivos é muito demorado.
Vamos entender por que isso acontece.
- O Tempo de seek no disco é alto
- Gastamos tempo de rotação para encontrar o setor inicial
- O arquivo pode estar fragmentado entre diferentes setores
Após vermos as principais causas da lentidão do disco, vamos exemplificá-lo utilizando números.
Considerando um HD de 7200 RPM (rotação elevado):
Note
Em notebooks, geralmente, a rotação é de 5400 RPM, isso porque quanto maior a rotação:
- Maior a vibração do notebook
- Maior o consumo de energia (prejudica a autonomia do notebook)
- Maior as chances de danos no disco ao movimentar o notebook
Em 1 minuto o disco faz 7200 rotações; logo cada rotação leva
Para encontrar o setor onde está o arquivo, este disco gasta em média 4 ms.
Note
A média pode ser encontrada com base na seguinte fórmula:
O tempo média de seek em um HD é de
Então, se considerarmos o tempo de seek + rotação para posicionar no setor -> chegamos em um tempo total de 19 ms.
Lembrando que uma operação de CPU com frequência de 4 GHz, leva 0,25 ns para concluir a operação. E o acesso a uma memória RAM é de
Portanto, acessar dados mantidos em disco (ou em alguma memória secundária) com frequência pode prejudicar a performance do programa ao lidar com um grande volume de dados.