quarta-feira, 20 de março de 2013

Python com tipagem estática

Lendo o site MINILIGHT, a minimal global illumination renderer, encontrei a seguinte tabela de benchmark das implementações do "minimal renderer":



language
(and version)
size
(lines of code)
size
(relative to C)
speed
(relative to C)
Scala icon Scala 2.9.14360.351 / 5.7
OCaml icon OCaml 4.00.14550.361 / 2.6
Python icon Python 2.6.14880.391 / 260
Python icon Python PyPy 2 beta4880.391 / 18
Python icon Python ShedSkin 0.1.14940.391 / 3.7
Ruby icon Ruby 1.8.74990.401 / 520
Lua icon Lua 5.2.15510.441 / 79
Lua icon Lua LuaJIT 2.0.05510.441 / 13
Flex icon Flex 2/AS3 (Flash 10,0,22,87)6440.521 / 120
Scheme icon Scheme R5RS (Bigloo 3.6a)6920.551 / 130
C++ icon C++ ISO-98 (LLVM-G++-4.2)9550.761 / 2.0
C icon C ISO-90 (LLVM-GCC-4.2)125011
Esta tabela tem várias coisas interessantes, mas aqui queria falar de uma delas. Temos, na linha 7, uma implementação de Python, chamada  shedskin  matando a pau. Esta incarnação do Python teve performance superior a linguagem Lua (com LuaJIT) e Scala. O que é bem surpreendente, já que a implementação clássica de Python tem a pior performance da tabela.

Eu não conhecia o ShedSkin. Então vamos ao que eu encontrei. De acordo com o site da ferramenta (https://code.google.com/p/shedskin/):
Shed Skin é um compilador experimental, que pode traduzir puro, mas Python tipado estaticamente e implicitamente (versões 2.4 até 2.6) em programas em C++ otimizado. Ele pode gerar programas stand-alone ou extensões que podem ser importadas e usadas em programas Python maiores.
...
Medidas de performance mostram um aumento de velocidade tipoco de 2-200 vezes sobre CPython.

O problema é este "Python tipado estaticamente e implicitamente". A partir do momento que tipamos Python estaticamente não perdemos muito da linguagem? Pra onde vão as caracteristicas dinâmicas da linguagem? Será que pra Python ter este nível de eficiência, ela tem que deixar de ser Python?



Nenhum comentário:

Postar um comentário