Seraphinux
“Lloramos por el lamento de un pájaro pero no por la sangre de un pez, benditos aquellos que tienen voz.”
September 5th, 2008
Visitada 85 veces, 11 en este dia.

Engine JavaScript V8: Tan rapido como C++?

Recuerdo que hace unos dias me quejaba de lo lento que podrian ser algunas Web App que usan de manera intensiva JavaScript y por ende algo de AJAX. Pues bien estoy casi apunto de tragarme mis palabras… ¿Por que?

Recuerdan que cierta empresa lanzo cierto buscador el cual usaba cierta engine (usare el termino Engien y Motor indistintamente) JavaScript… pues bien hace poco lei un articulo que analizaba esta engine, y creanme que me dejo helado… De lo que estoy hablando es del Google y su ya popular navegador Chrome, el cual usa la engine V8 para el “procesado” de JavaScript. Antes de pasar al articulo al cual hago referencia hagamos un poco de contexto.

Segun Google Code

  • … es una motor JavaScript bajo licencia OpenSource desarrollado por Google.
  • … esta escrito en C++ y es usado en Google Chrome (Navegador Web bajo licencia OpenSource desarrollado por Google).
  • … implementa ECMAScript una especificacion del ECMA-262 3ra edicion, y corre sobre Windows XP, Vista, Mac OS X 10.5 y Sistemas Linux que usen procesadores IA-32 o ARM
  • … puede correr de manera standalone (algo asi como solito) o embebido en aplicaciones C++ (esta parte me hace imaginar tantas cosas)

Segun Wikipedia

  • … es una engine JavaScript bajo licencia OpenSource desarrollada por Google en Dinamarca e incluida en el navegador Google Chrome.
  • … logra una gran rendimiento ya que compila el codigo JavaScript en codigo maquina nativo (IA-32, ARM) en lugar de generar un ByteCode. De esta manera las aplicaciones JavaScript se ejecutan a la velocidad de un binario.

Bueno ya sabemos que es V8, los punto mas descatables son:

  • … esta escrito en C++ y es usado en Google Chrome (Navegador Web bajo licencia OpenSource desarrollado por Google).
  • … puede correr de manera standalone (algo asi como solito) o embebido en aplicaciones C++ (esta parte me hace imaginar tantas cosas)
  • … logra una gran rendimiento ya que compila el codigo JavaScript en codigo maquina nativo (IA-32, ARM) en lugar de generar un ByteCode. De esta manera las aplicaciones JavaScript se ejecutan a la velocidad de un binario.

¿Que por que es descatable? Imaginen las posibilidades… A LA VELOCIDAD DE UN BINARIO…. y COMPILADO EN C++; bueno bueno, ahora pasemos al articulo que les comentaba. Este articulo lo puedes encontrar en V8 under the hood, como bien podras darte cuenta esta en ingles, pero “no problem” las siguientes son mis pseudotraducciones de los puntos mas descatables:

… no es realmente una “clasica” VM [Virtual Machine]. No usa una representacion intermedia o un codigo de alto nivel que sea posible programar a nivel de la VM. Lo unico que entiende V8 es JavaScript y su unico objetivo es la representacion en ensamblador nativo (Intel y ARM por ahora. Por lo tanto en algunos aspectos se hacerca mas a un compilador que a la tradicional VM…

… tambien es mas que un simple compilador. Incluye un ¿generacional? (Nota: en el original es generational, pero no logro intuir a que se refiere), precisa recolector de basura, ademas de que el ensamblador generado es repasado en tiempo de ejecucion dependiendo del camino que tome el programa. Que llamen a clases ocultas permite la generalizacion de algunas llamadas lo cual permite optimizar mas…

… V8 no es como la JVM o Mono, donde es posible generar bytecode intermedio, solamente es de Javascript hacia ensamblador. Lo cual hace la compilación cruzada a Javascript una opción interesante. En teoría y con las optimizaciones suficiente, esto podría ser tan rápido como C por lo menos en algunos puntos…

En verdad que V8 es sorprendente, la gente de Mozilla dice que su engine llamado TraceMonkey sera todavia mas rapida que V8; viendo las cosas con esta perspectiva, las aplicaciones que hacen uso intensivo de JavaScript se veran altamente beneficiadas, ni que hablar de AJAX.

Nota: Ya saben, los anteriores punto fueron mis pseudotraducciones el articulo original lo pueden consultar ustedes mismos y si encuentran algun error en mi PT me dicen para modificarla.

Posts Relacionados
September 4th, 2008
Visitada 72 veces, 11 en este dia.

Java: Truncar o Redondear un Numero Double a n Decimales

Hace unos dias tuve la necesidad de redondear y truncar un numero Double; total que me puse “creativo” y termine usando un metodo basado en Strings… el cual si bien si me funcionaba tenia un sinfin de “excepciones” o mejor dicho “particularidades”… que si era negativo, que si era mayor a tal numero etc. Eso me llevo a probar otra forma pero basado en DecimalFormat, la cual en la mayoria de los casos terminaba redondeando.
Para no hacerlo muy largo este post, les dejo los metodos que ensamble apartir de pedazos de codigo que encontre en la red.

Redondear un numero a n Decimales


public double Redondear(double nD, int nDec)
{
  return Math.round(nD*Math.pow(10,nDec))/Math.pow(10,nDec);
}

Truncar un numero a n Decimales


public double Truncar(double nD, int nDec)
{
  if(nD > 0)
    nD = Math.floor(nD * Math.pow(10,nDec))/Math.pow(10,nDec);
  else
    nD = Math.ceil(nD * Math.pow(10,nDec))/Math.pow(10,nDec);

  return nD;
}

Ya saben cualquier duda comentario o sugerencia la pueden dejar como comentario; espero les sirvan estos metodos, los cuales probe y efectivamente me funcionaron.

Posts Relacionados
September 2nd, 2008
Visitada 74 veces, 2 en este dia.

Google Chrome: Lista Beta para descarga.

Ya esta lista la beta para descarga de este tan polemico navegador de Google. Esta entrada fue creada usando Google Chrome… como se extrañan los plugins de Firefox :S (Firebug?, MassureIt?, etc.)

Google Chrome

Posts Relacionados
September 2nd, 2008
Visitada 51 veces, 3 en este dia.

JS-Coverflow: Menu estilo iTunes

Creo que dejare de pensar por el momento en doubles, flotantes, decimales y las pende….jadas de Java.

Una de las cosas mas atractivas que tiene el iPhone, el iPod y el iTunes es sin lugar a dudas su menu (para musica). Ahora imagina que tienes una aplicacion que muestra informacion sobre cd’s de musica o musica en general ¿apoco no se veria chida con un menu al estilo iTunes? Claro que si.

Menu iTunes

Pues bien esto esta al alcance de tu raton usando JS Coverflow, esta es una libreria JavaScript que te permite darle ese bonito efecto, no solo a portadas de CD’s sino a cualquier conjunto de imagenes que quieras (portadas de libros?).

Menu JS-Coverflow

El demo luce genial, solo con un detalle… la velocidad :S Yo siempre he sido de la idea de que cada cosa en su lugar… una aplicacion o efectos de este tipo se lo dejaria a Flash pero bueno esa es mi opinion. Pruebalo y dime que te parecio.

Posts Relacionados
September 2nd, 2008
Visitada 34 veces, 1 en este dia.

Doubles, Flotantes y Java

Entiendelo 0.9999999999999 no es 1.0

- Seraphinux, peleandose con Java.

Posts Relacionados
  • 0 Comentarios

    Google la vuelve a liar. Y es que coloso de Internet tiene poder y potestad para hacer cosas como estás y peores. Hoy anuncia Google que va a desarrollar su propio navegador, Google Chrome. Con la única intención de dominar internet desde tu máquina hasta las suyas.


    Visitada : 199 veces, 7 en este dia.