É porque você está exibindo todos os números na tela por meio do puts
. Estes, então, devem ser enviados pela conexão SSH, o que prolonga o tempo de execução dos scripts. A saída também é armazenada em buffer localmente, mas os efeitos não são tão perceptíveis.
Você pode confirmar isso descarregando toda a saída em um arquivo.
Exemplos
local no laptop para a tela
$ time ruby r.rb
real 0m19.474s
user 0m3.236s
sys 0m3.207s
local no laptop para o arquivo
$ time ruby r.rb >& rb_local.txt
real 0m0.785s
user 0m0.760s
sys 0m0.020s
SSH para o desktop para a tela
$ time ruby r.rb
real 0m18.026s
user 0m4.118s
sys 0m3.815s
SSH para o desktop para o arquivo
$ time ruby r.rb >& rb_remote.txt
real 0m3.942s
user 0m3.036s
sys 0m0.741s
Ao escrever scripts como este, geralmente é uma boa ideia despejar o conteúdo em um arquivo e, em seguida, usar uma ferramenta como tail
para observar o arquivo periodicamente.
NOTA: A notação >&
redirecionará ambos STDERR e STDOUT para os arquivos .txt
. No entanto, a saída de time
ainda será exibida no console. Essa notação é equivalente a cmd > some_file.txt 2>&1
.