Na época do Commodore Amiga, os usuários tinham acesso a um disco RAM sempre presente. A velocidade de leitura / gravação de arquivos rivalizava com qualquer unidade de disco da época em magnitudes. O disco RAM possibilitava trabalhar os dados do arquivo na velocidade máxima do computador e era limitado apenas pela quantidade de RAM do sistema; naquela época, um tamanho máximo de 128 MB.
Os computadores de hoje geralmente têm RAM suficiente para armazenar dados de um DVD inteiro e, para usuários avançados, capacidade suficiente para preencher vários DVDs Blu-Ray. Dependendo da velocidade do disco do seu sistema e da velocidade do barramento de memória, você pode esperar velocidades de rendimento de 4 a 12 vezes mais rápidas e tempo de busca ZERO.
Com isso em mente, decidi mover minha pasta tmp do Rails para um disco RAM para ver se havia um benefício notável durante o desenvolvimento. HOUVE! rails server
começou mais rápido. Fazer alterações em arquivos de ativos recompilados em uma fração de sua velocidade anterior. Qualquer cache do Rails estava automaticamente na RAM sem o uso do Memcached. Apenas navegar em meus trabalhos em andamento parecia mais rápido do que antes.
Siga estas quatro etapas para aproveitar um disco RAM em seu aplicativo:
A partir de um console, você pode criar manualmente um disco de RAM de 1 GB no OS X usando
diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://2048000`
ou baixar o aplicativo RAM Disk Creator gratuito de Florian Bogner em https://bogner.sh/2012/12/os-x-create-a-ram-disk- o caminho mais fácil .Em seguida, remova a pasta tmp do seu aplicativo Rails
rm -rf tmp
.Crie uma pasta no disco RAM (usei o mesmo nome da pasta do meu aplicativo)
mkdir -p '/Volumes/RAM Disk/rails_app/tmp'
.E, finalmente, crie um link simbólico para a pasta tmp no disco RAM
ln -s '/Volumes/RAM Disk/rails_app/tmp' tmp
.
Como a natureza volátil de um disco RAM requer a recriação da estrutura da pasta após uma reinicialização, recomendo modificar config/application.rb
e anexar este trecho de código diretamente após a require 'rails/all'
linha para garantir que a pasta tmp esteja presente.
if Rails.env.development?
basepath = File.expand_path('../../.', __FILE__)
basename = basepath.split('/').last
tmp_path = "/Volumes/RAM Disk/#{basename}/tmp"
FileUtils.mkdir_p tmp_path
if File.directory?("#{basepath}/tmp") && !File.symlink?("#{basepath}/tmp")
FileUtils.rmdir("#{basepath}/tmp")
end
FileUtils.ln_sf("/Volumes/RAM Disk/#{basename}/tmp", "#{basepath}/tmp")
end
Usando o Automator ou o launchd, você pode adicionar o diskutil
comando como uma Application > Run Shell Script
ação e definir o automator para iniciar como um, de Login Item
modo que o disco RAM esteja sempre presente na inicialização – assim como nos dias do Amiga.
Você pode testar o desempenho de seu disco RAM em comparação com seu disco rígido usando o Blackmagic Disk Speed Test https://itunes.apple.com/us/app/blackmagic-disk-speed-test/id425264550 .
NOTA: Qualquer programa que usa um “disco de trabalho” pode aproveitar a velocidade de um disco RAM, incluindo Adobe Photoshop.