[Madrid-pm] Nueva herramienta para procesar la ingente cantidad de textos de la web

Salvador Fandino sfandino en yahoo.com
Mie Dic 3 13:49:59 PST 2014





----- Original Message -----
> From: Joaquin Ferrero <explorer en joaquinferrero.com>
> To: madrid-pm en pm.org
> Cc: 
> Sent: Wednesday, December 3, 2014 10:03 PM
> Subject: Re: [Madrid-pm] Nueva herramienta para procesar la ingente cantidad de textos de la web
> 
> El 03/12/14 a las 09:12, Roberto Henriquez escribió:
>>  On 12/03/2014 06:25 AM, Alex Muntada wrote:
>>>  Para más inri está escrito en python, casi parece una broma...
>>> 
>>>  Lo de que sea más rápido en java parece ser por el modo de ejecución de
>>>  hadoop para lenguajes no java.
>>> 
>> 
>>  Eso es lo que yo entiendo, según el readme: «Even though Hadoop Streaming 
> is a very useful tool, important degradations in the performance were detected 
> using Hadoop Streaming with respect to Hadoop Java codes.»
>> 
>>  Parece que el problema viene de algún overhead de Hadoop Streaming.
>> 
>>  saludos!
> 
> Estoy sospechando que el tema puede estar en el tiempo que Perl 
> "pierde" en el proceso de compilación de los programas, antes de 
> ejecutarlos, cosa que los de Java no tienen (se compilan una vez).
> 
> O algo peor... que estén usando un Perl v5.8.8 en Red Hat 2008-2010... entonces 
> sí que queda claro: el intérprete de Perl tenía un bug en la reserva de memoria, 
> que lo hacía mucho más lento de lo normal.
> 
> Es que, otra razón, no se me ocurre. Y eso que he visto cantidad de ejemplos en 
> los que la ejecución de Perl es más rápida y con muchos menos recursos que Java, 
> haciendo la misma tarea.


Perl es un lenguaje interpretado, por un interprete diseñado hace mas de 20 años y que en esos 20 años la mayoría de los cambios que le han echo han sido chapuzas que no se adaptaban bien al diseño original (tie, prototipos, threads, overload, etc.) y que aunque no han tenido un gran impacto en el rendimiento si que han sido bloqueantes a la hora de mejorarlo.

Por el otro lado, cuando apareció Java hace también casi 20 años, el runtime, la JVM, era una porquería, pero en este tiempo lo han reescrito varias veces, aplicado todas las técnicas de optimización conocidas. El HotSpot actual que viene a ser un JIT que optimiza de forma dinámica los puntos calientes, es una pasada. Lo mismo pasa con los algoritmos de gestión de memoria, de lo mejorcito que hay (¡y en Perl seguimos contando referencias!). Hoy en día, el rendimiento en la JVM es similar al de programas en C o C++. Solo, en código de muy bajo nivel puede quedarse Java un poco atrás.


La cuestión es que si hubiese una definición del lenguaje o este fuese más simple, acabarían apareciendo nuevas implementaciones para otras tecnologías como ha pasado con Python (PyPy, IronPython, Jython) o con Ruby... pero como el lenguaje es lo que es, y la definición del lenguaje es la propia implementación en C del mismo, nadie ha tenido las pelotas o el conocimiento para hacerlo.

Perl de todas formas aun tiene sus puntos fuertes, al proveer al usuario de estructuras de datos y algoritmos (por ejemplo el motor de expresiones regulares) de alto nivel implementados en C muy optimizado, se evitan "cagadas" que en otros lenguajes de más bajo nivel programadores mediocres pueden cometer de forma más o menos frecuente. Por ejemplo, es fácil que una operación simple como push(@a) acabe teniendo un coste O(N) o incluso O(N^2) en vez de O(1) que es el óptimo y el que tiene en Perl.

Perl solia salir bien parado en cuestiones de rendimiento cuando se comparaba con otros lenguajes de scripting o dinamicos, hace tiempo que no investigo ese tema, pero de todas formas es una disculpa burda, Python esta diseñado para ser lento... y mirad como van ha día de hoy otros lenguajes en los que ha habido un esfuerzo por acelerarlos, como por ejemplo JavaScript (con técnicas inventadas la mayoría hace varias décadas, cuando el state-of-the-art era Smalltalk (como hemos atrasado!!!))

Pero recordad que lo bueno que tiene Perl es que es rápido a la hora de desarrollar!!

Fin del rant, os tengo que dejar que me reclama un demonio de 2 años que corre por mi casa...


Más información sobre la lista de distribución Madrid-pm