Bom, bonito e barato

Autor: Pedro Luis Kantek Garcia Navarro  

Tem um passarinho que volta e meia entra na minha sala e desanda a cantar. O danado é bom programador, conhece um bocado do mercado de informática e às vezes faz previsões que acabam se confirmando na lata. Ultimamente, tem falado (piado) muito sobre o tema software livre. De fato, o custo da plataforma de software de qualquer micro não pára de crescer e se não quisermos estourar todos os orçamentos, há que se buscar alternativas de menor custo e eventualmente de maior confiabilidade.

Este artigo não vai enveredar pelo acerto ou desacerto de trabalhar com plataformas proprietárias ou livres. Claro está, que muito papel e tinta podem ser gastos defendendo uma ou outra posição. Declino da controvérsia por uma única razão: embora argumentos técnicos pesem e sejam basilares, não nos enganemos: a componente ideológica desta discussão não é desprezível. Assim, apesar da insistência do passarinho, passo ao largo da disputa.

Ao contrário, este artigo mostrará números. Ele buscará responder à pergunta sobre qual é o desempenho medido com um cronômetro de um mesmo programa fonte sendo executado na mesma máquina em duas situações distintas: na primeira, com o sistema operacional proprietário e na segunda com o sistema operacional freeware.

Usei como linguagem de programação uma bem antiga, mas que continua sendo um monumento à capacidade intelectual da raça humana: refiro-me ao APL. Embora os seus adeptos no Brasil caibam todos dentro de um fusca, fora do país a realidade é outra. Há um renascimento de aplicações, versões, programas, congressos, publicações etc.

Infelizmente (ainda) não há um mesmo interpretador freeware que rode tanto no sistema operacional windows quanto no linux. Mas há promessa para breve da liberação da versão linux do interpretador APL2C, que por enquanto só está disponível para Windows.

Foram desenvolvidos 2 beenchmarks, sendo o primeiro a geração de 100.000 números aleatórios entre 1 e 100.000, fazendo-se para cada um deles 5 conversões entre inteiro e string de caracteres. Para os passageiros do fusca, segue a listagem deste primeiro programa de controle:

O segundo beenchmark foi um programa simples que implementa 3 loops embutidos (um dentro do outro), cada um com 100 variações de índice, totalizando 1.000.000 de iterações.

A linguagem APL encontra ambientes estáveis, disponíveis e gratuitos para todas as plataformas testadas. Esta abordagem foi a escolhida por permitir usar rigorosamente os mesmos programas fonte nas 3 pesquisas (windows, dos e linux). Não se mudou uma vírgula sequer.

No ambiente WINDOWS desenvolveram-se estas funções em 2 ambientes: o primeiro mais antigo é orientado a caracter e, portanto sob DOS. O segundo, já usa os recursos do WINDOWS de maneira plena, principalmente a memória, que na versão DOS fica limitada aos infames 640K. Os produtos usados foram o APL*PLUS versão 6 para DOS (disponível como freeware em ftp://watserv1.uwaterloo.ca/languages/apl/apl-plus/ ), e o produto APL2C versão 5.0.3 para WINDOWS disponível em http://www.apl2c.com.

No ambiente LINUX, além do próprio linux na distribuição red hat, versão 7.0 (disponível em http://www.redhat.com, além de milhares de outros locais na Internet) usou-se o SHARP APL, que não tem custo na versão para linux, disponível em http://www.soliton.com.

Usei um mesmo computador PC de 400 MHz de ciclo, contendo 64 Mbytes de memória real. O windows utilizado foi o Windows 98.

Obviamente, nos 3 casos o resultado líquido da computação foi o mesmo, o que era esperado desde o começo. Refiz o teste em diversos outros computadores variando o processador e a memória. Todos os resultados obtidos são coerentes com o resultado numérico acima. Se alguém quiser repetir estes (ou outros) testes, o computador mencionado está à disposição, já que ele foi especialmente designado para ser usado neste tipo de avaliação e aprendizado.