Crivo de Eratóstenes Simples em PHP
Publicado por Perfil removido (última atualização em 24/04/2012)
[ Hits: 5.626 ]
Não é muito comentado, mas pode-se fazer scripts que rodem direto do terminal para tarefas corriqueiras em PHP.
Igual a Perl, Python e Shellscript.
Como o objetivo desta linguagem é ser uma página dinâmica de web (ou CGI, mais raro), essa observação passa por desapercebido.
Para rodar um script em PHP igual aos outros script, necessita-se de três coisas:
1ª Permissões de execução: "chmod +x ..."
2ª Colocar She-Bang na primeira linha: "#!/usr/bin/php"
3ª Todo o código deve estar entre as tags "<?php" e "?>".
O que estiver fora das tags será impresso na tela sem ser interpretado.
=================================================================
Este script tabula números primos. A contagem está marcada para o intervalo de 1 até 10000000 (dez milhões).
Um script em Perl de código muito similar tabulou aqui os ńúmeros do intervalo de um a um milhão em quase quatro segundos.
Este script fez o mesmo teste de um a um milhão em pouco menos de três, isto é um segundo a menos.
Mas o que me chamou a atenção foi que o mesmo teste para ńúmeros do intervalo de um a dez milhões levou em Perl 1min 17seg (um minuto e desessete segundos).
Este script aqui em "PHP de terminal" fez a mesma tabulação no intervalo de um a dez milhões em 57seg (cinquenta e sete segundos).
Essa diferença de 20 segundos é muito significante para não ser notada. Se fosse em hardware mais antigo, seria uma eternidade.
PHP mais rápido que Perl para ser usado em terminal?? Ainda é pouco para comparação.
Falta testar acessos a recursos de sistema e ver até onde vai o poder de fogo de ambas as linguagens para tarefas similares.
Desde CGI, administração de sistemas e uso em aplicativos...
Pra variar, não sei se ainda pode ser melhorado, nem onde pode falhar. Aguardo por bugs.
#!/usr/bin/php <?php $primes = array (2, 3); $i=5; $j=0; $k=0; do { $j = 0; $k=sqrt($i); while ($primes[++$j]<$k && ($i%$primes[$j])); $primes[$j]>$k and array_push ($primes, $i); $i+=(($i%3==2)?2:4); } while ($i<10000000); foreach ($primes as $j) { echo "$j "; } echo "\n"; ?>
DOOM clássico (quase) vanilla e um pouco melhorado
Mamãe, quero descompactar e também compactar arquivos no terminal!
Alias para atualizar apt e flatpak
Instalando Micosoft Edge no Fedora 40
junest - Mini Arch Linux dentro de sua Distro
Rescuezilla - o Clonezilla com interface gráfica e ferramentas
Latte Dock, um dock de aplicativos com várias opções de configuração para o KDE Plasma
Não tenho cursor no notebook (0)
Instalar dependências. O que não esquecer quando instalar pacotes deb (14)
Tenho um servidor próprio e gostaria de hospedar um site nele. (9)