Arquivo

Posts Tagged ‘Python’

Comparação de performance

Com a ajuda de alguns amigos, fizemos uma comparação de performance bem simples e muito distante de ser um benchmark confiável entre algumas linguagens/versões usando o fibonacci de 35. Também foi realizado o fibonacci de 45 nas linguagens com melhor performance. Foi somente uma experiência e o resultado em minha máquina foi esse:

gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) – fib.c – fib2
Compilação otimizada usando: gcc -O3 -o fib2 fib.c (contribuição de Filipe Saraiva)
./fib2 35
Tempo: 0.124780
Resultado: 9227465
./fib2 45
Tempo: 15.655936
Resultado: 1134903170

Scala 2.7.7final – Fib1.scala (contribuição do Matheus Moreira)
scala Fib1 35
Tempo: 0.137780472
Resultado: 9227465
scala Fib1 45
Tempo: 19.697318756
Resultado: 1134903170

Java(TM) SE Runtime Environment (build 1.6.0_24-b07) – fib.javafib.class
java fib 35
Tempo: 0.146963799
Resultado: 9227465
java fib 45
Tempo: 20.793879543
Resultado: 1134903170

Free Pascal Compiler version 2.4.0-2 [2010/03/06] for x86_64 – fib.pas – fibp (contribuição do Nécio Veras)
Compilação otimizada usando: fpc -O3 fib.pas -ofibp
./fibp 35
Tempo: 0.221000001
Resultado: 9227465
./fibp 45
Tempo: 30.445999150
Resultado: 1134903170

gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) – fib.cfib
Compilação não otimizada usando: gcc -o fib fib.c
./fib 35
Tempo: 0.276678
Resultado: 9227465
./fib 45
Tempo: 32.527250
Resultado: 1134903170

Groovy Version: 1.8.0 JVM: 1.6.0_24 – fib2.groovy (contribuição do Wanderson Santos)
groovy fib2.groovy 35
Tempo: 0.290426544
Resultado: 9227465
groovy fib2.groovy 45
Tempo: 33.457977715
Resultado: 1134903170

Haskell – The Glorious Glasgow Haskell Compilation System, version 6.12.1 – fib.hsfibh (contribuição do Diego Victor com correção da Mônica Regina da Silva)
Compilado usando: ghc –make -O3 fib.hs -o fibh
./fibh 35
9227465
0.317424
./fibh 45
1134903170
40.989142

Ruby  – Rubinious 1.2.1dev (1.8.7 f4c08fbe 2010-12-21 JI) [x86_64-unknown-linux-gnu] – fib.rb
ruby fib.rb 35
Tempo: 1.339709
Resultado: 9227465
ruby fib.rb 45
Tempo: 158.686395
Resultado: 1134903170

JRuby 1.5.3 (ruby 1.8.7 patchlevel 249) (2010-09-28 7ca06d7) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_20) [amd64-java]fib.rb
jruby fib.rb 35
Tempo: 4.371
Resultado: 9227465

Groovy Version: 1.8.0 JVM: 1.6.0_24 – fib.groovy (contribuição do Luís Bruno)
groovy fib.groovy 35
Tempo: 5.106544505
Resultado: 9227465

Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio – fib.lua (contribuição da Mônica Regina da Silva)
lua5.1 fib.lua 35
Tempo: 5.36
Resultado: 9227465

Ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux] – fib.rb
ruby1.9.1 fib.rb 35
Tempo: 6.81764046
Resultado: 9227465

Ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]fib.rb
ruby fib.rb 35
Tempo: 7.65983433
Resultado: 9227465

Groovy Version: 1.7.5 JVM: 1.6.0_20fib.groovy (contribuição do Luís Bruno)
groovy fib.groovy 35
Tempo: 8.653575988
Resultado: 9227465

Python 2.6.5 – fib.py
python fib.py 35
Tempo: 0:00:11.448263
Resultado: 9227465

Python 3.1.2 – fib.py
python3.1 fib.py 35
Tempo: 0:00:12.620807
Resultado: 9227465

Ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux] – fib.rb
ruby fib.rb 35
Tempo: 34.993339
Resultado: 9227465

Agradecimentos especiais aos amigos que contribuíram com as seguintes implementações:

Groovy – Luís Bruno / Wanderson Santos / Thiago Witt
Haskell
– Diego Victor (com correção da Mônica)
Lua – Mônica Regina da Silva
Pascal – Nécio Veras
Scala – Matheus Moreira / Thiago Witt

O Thiago Witt contribuiu com versões Groovy e Scala extramamente otimizadas usando Tail-call. Foi tão otimizado que resolvi testar o fibonacci de 10000:

Scala 2.7.7final – Fib2.scala (contribuição do Thiago Witt – Tail-call)
scala Fib2 10000
Tempo: 0.09665077

Groovy Version: 1.8.0 JVM: 1.6.0_24 – fib3.groovy (contribuição do Thiago Witt – Tail-call otimizada para evitar StackOverFlow)
groovy fib3.groovy 10000
Tempo: 15.135361192

O Thiago Witt também contribuiu com uma versão em Groovy extramamente otimizada, mas que dá StackOverflow para números grandes. Assim, testei as versões Tail Call com fibonacci de 4000:

Scala 2.7.7final – Fib2.scala (contribuição do Thiago Witt – Tail-call)
scala Fib2 4000
Tempo: 0.062994021

Groovy Version: 1.8.0 JVM: 1.6.0_24 – fib4.groovy (contribuição do Thiago Witt – Tail-call)
groovy fib4.groovy 4000
Tempo: 0.14749984

Groovy Version: 1.8.0 JVM: 1.6.0_24 – fib3.groovy (contribuição do Thiago Witt – Tail-call otimizada para evitar StackOverFlow)
groovy fib3.groovy 4000
Tempo: 2.789794005

PDF e HTMLs com documentação completa do Django atualizada

Estou gerando periodicamente, através do Sphinx, um PDF e um arquivo compactado com os HTMLs de toda a documentação do Django atualizada para acesso offline. A primeira página do PDF mostra a data em que a documentação foi gerada e o link permanente para baixar sempre a versão mais atual é: http://dl.dropbox.com/u/1477113/material_didatico/python/django.pdf

Já para baixar os HTMLs para acesso offline basta acessar: http://dl.dropbox.com/u/1477113/material_didatico/python/django_html.zip

Para quem tiver interesse em gerar seu próprio PDF e a documentação do Django em HTML para acesso offline, basta seguir o seguintes passos:

1. Baixar a última versão da documentação através de Subversion a partir do comando a seguir:

svn co http://code.djangoproject.com/svn/django/trunk/docs/ django_docs

1.1 O passo acima só precisa ser feito da primeira vez. Para novas atualizações basta executar:

svn update

Caso você não tenha o subversion instalado, basta fazer o seguinte no Ubuntu:

sudo apt-get install subversion

2. Mudar para o diretório da documentação:

cd django_docs/

3. Gerar a documentação em HTML:

make html

4. Gerar a documentação em PDF:

make latexpdf

Para que tudo isso funcione é necessário que o Sphinx (versão 1.o ou superior) e o Latex estejam instalados.

No meu caso, fiz o seguinte para que tudo funcionasse no Ubuntu:

sudo easy_install -U Sphinx
sudo apt-get install texlive-latex-base texlive-fonts-recommended texlive-latex-recommended texlive-latex-extra

Observe que o comando sudo easy_install -U Sphinx não serve somente para instalar o Sphinx. Ele ainda permite a atualização para a última versão do Sphinx, caso uma versão anterior  já esteja instalada.

Caso você não tenha o easy_install instalado, ainda será necessário mais um passo antes de instalar o Sphinx:

sudo apt-get install python-setuptools

Quem quiser evitar esses passos, é só acessar os arquivos que estou gerando e que vou atualizar periodicamente.

Categorias:Django, Python Tags:,

Resumo do Python e PHP

Um resumo do Python básico pode ser acessado em: http://www.astro.ufl.edu/~warner/prog/python.html

O mesmo autor também publicou um resumo do php: http://www.astro.ufl.edu/~warner/prog/php.html

Curso de Python Gratuito

Um curso gratuito de Python está sendo ministrado pelo Magnun e disponibilizado no site Under-Linux.
Atualmente o curso conta com quase 40 aulas e uma nova aula é disponibilizada a cada semana.
Para mais detalhes acesse: http://under-linux.org/curso-de-python-gratuito-no-under-linux-1266/

Aprendendo Python e Django

Alguns livros gratuitos e em PDF sobre Python:
Como pensar como um cientista da Computação usando Python
http://www.eltonminetto.net/docs/pythontut.pdf

A versão em inglês:
Think Python: How To Think Like a Computer Scientist
http://www.greenteapress.com/thinkpython/thinkpython.html

Python para Desenvolvedores – 2ª Edição
http://ark4n.wordpress.com/python/
Livro voltado para desenvolvedores que já tem conhecimento de programação, incluindo desde a criação de interfaces com usuário, computação gráfica, aplicações para internet e sistemas distribuídos.

E para quem gosta de jogos…
Invent Your Own Computer Games with Python (2nd Edition)
http://inventwithpython.com/

E sobre Django:
Excelente documentação em português que traduz a documentação oficial: http://docs.djangobrasil.org/

http://www.djangobrasil.org/

E em inglês a documentação oficial, original e mais atualizada: http://docs.djangoproject.com/en/dev/
http://www.djangoproject.com/

Documentação offline do Django 1.2 em PDF (inglês)
http://www.scribd.com/doc/31510604/Django-1-2-PDF-Documentation-For-Offline-Reading

Um outro livro bem interessante sobre Django é esse do Marinho Brandão que está dividido em duas partes:
Aprendendo Django no Planeta Terra: http://www.aprendendodjango.com/download/
http://dl.dropbox.com/u/1552368/aprendendo-django-vol-1.pdf
http://dl.dropbox.com/u/1552368/aprendendo-django-vol-2.pdf

Categorias:Django, Python Tags:,