Teste de desempenho com números primos em BASH
Publicado por Andre Miguel (última atualização em 06/01/2010)
[ Hits: 7.930 ]
Certo dia me deparei com um bottom brincalhão que dizia: "Digite qualquer número primo de 11 dígitos para continuar". Fiquei com vontade de saber se havia tal número.
Então fiz um shellzinho para testar. Primeiros 10, beleza; primeiros 100, beleza, primeiros 1000, já não estava mais tão rápido. Percebi a oportunidade de utilizar este script como benchmark de desempenho entre servidores, sejam de mesmo hardware ou não.
Quando você executar, pode demorar a aparecer alguma coisa na tela, mas ele está rodando. Pode verificar com strace ou truss (Solaris).
Após você testar e tiver a coragem de descomentar a linha do 10000000000, me poste aqui os números primos que você achou!
Dica: para temporizar a execução, utilize a linha abaixo:
$ bash primo.sh 2>&1 |egrep 'Primo|real' |awk '{if ($2 ~ /s/){split($2,minsplit,"m");min+=minsplit[1];seg+=substr($2,3,5);}else{print min,seg; print $0; min=seg=0; }}'
Você deverá ter uma saída como esta:
0 0.1
Primo: 11
0 0.248
Primo: 13
0 0.587
Primo: 17
#for (( i=10000000000; i<= 999999999999; i++)); do for (( i=10; i<= 999; i++)); do j=$i; primo=0; time cat <<-EOF $(for (( j=$i; j>=1; j--)); do if [ `echo $((i%j))` -eq 0 ]; then ((primo++)); if [ $primo -gt 2 ]; then j=1; else if [ $primo -eq 2 ] && [ $j -eq 1 ]; then echo "Primo: $i"; fi fi fi; done;) EOF done
Descobrir se um número é par ou impar
Instalação do Cacti v0.8.7g + Plugins
Script de controle do Alfresco para RHEL / CentOS / Fedora
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Porblema com MergeList [RESOLVIDO] (10)
Melhor hospedagem em nuvem para projetos Laravel com baixo custo? [RES... (7)
Como baixar os drivers de áudio no linux mint? (7)
Como posso localizar o arquivo HTML da página inicial do GLPI dentro d... (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta