Archivo de la categoría Programación

Rendimiento Javascript vs VBScript (II)



Ya ni me acordaba que en 2004 en Rendimiento Javascript vs VBScript ocurrió el extraño resultado que demostraba que la ejecución de código VBScript resultaba ser más veloz que la de Javascript.

Mucho ha cambiado en estos 7 años en los navegadores web, que debido a la complejidad de aplicaciones client-side, han ido optimizando la ejecución de Javascript, con los ahora habituales JIT.

Obviamente Internet Explorer 9, ha seguido también este camino, al menos en su versión de 32 bits, por lo que no estaba de más verificar si esto seguía siendo así o no.

A priori, todo parecía indicar que las tornas habrían cambiado, y si bien con Internet Explorer 6, Microsoft apostaba por VBScript para sus aplicaciones empresariales que requerían un rendimiento extra, y manejar una complejidad mayor, no tendría mucho sentido que VBScript hubiera seguido los mismos pasos.…

Continuar leyendo...

TBClamAV



A nivel particular, sigo siendo un usuario fiel de The Bat! y como antivirus uso Avira Antivir en modo standalone o bajo demanda.

Es cierto que se puede integrar Antivir con The Bat! sin problemas, y es algo de lo que hablaré más adelante, sin embargo, el problema de estas soluciones, es que necesitan cargar y procesar el archivo de firmas, cada vez que se analiza un elemento. Esta carga adicional, frena bastante la recepción de emails, sobre todo, si en la cola hay más de uno.

Dicho lo cual, y aprovechando que el antivirus de código abierto ClamAV, tiene un módulo de tipo servicio/demonio llamado clamd, y que una vez cargado, clamscand, se conecta con él vía TCP para analizar contenidos, me he decidido por escribir desde cero, mi propio plugin, utilizando esta característica.…

Continuar leyendo...

Sieve en Java



Después de Sieve en BASIC, he decidido reemprender la saga, esta vez, implementando Sieve en Java.

Ejecutándolo con JRE 1.6.0 update 25, sobre Win64, ha requerido para 50.000 iteraciones, un tiempo de 41.049 ms, y lo mismo sobre Win32 de 40.231 ms.

Con estos resultados, tenemosa Java, superando aunque por poco, el rendimiento de VB.NET, que aunque no debería ser así, sorprende. Se demuestra de nuevo la menor madurez de la versión x64, que como ya hemos ido viendo en otras plataformas es levemente peor.

Este resultado, viene a indicar que la eficiencia de Java ha ido mejorando sustancialmente con el tiempo, al menos en lo que serefiere a cálculos puros, porque otra cosa es cuando se debe interactuar con los recursos nativos del sistema (memoria, archivos, etc).…

Continuar leyendo...

Lenguajes en peligro de extinción



Con el paso de los tiempos, han nacido muchos lenguajes de programación, que durante su ciclo de vida, se han reproducido, y en algunos casos han muerto.

El primero que me viene a la mente es Logo, que hasta mediados de los 90 iba a representar el gran salto evolutivo en la pedagogía de la programación.

En el entorno empresarial de los grandes sistemas, seguimos viendo COBOL, REXX y hasta RPG, promovidos y/o creados por el antiguo gigante azul (IBM).

Incluso con un nivel alto de adopción como lo fueran en diferentes épocas Pascal, BASIC, Fortran, Lingo, o xBase (dBase, Clipper, FoxPro), hoy sobreviven, pero lejos de ser lo que eran.…

Continuar leyendo...

Emular un PC en Javascript



A PC emulator in Javascript, es un proyecto del reputado Fabrice Bellard, que demuestra como es posible emular un PC en lenguaje Javascript.

Parte del código de QEMU, del que Fabrice ha creado también una gran parte, para conseguir una emulación equiparable a un 486SX, con un rendimiento meritorio, pero todavía lejos de la realidad.

Si quitamos la curiosidad tecnológica, probablemente la mayor utilidad en A PC emulator in Javascript, sea la de utilizarlo como benchmark de máquinas Javascript en diferentes navegadores, por lo que me he tomado la libertad de ejecutarlo en las últimas versiones de los navegadores web disponibles para Windows, anotando el tiempo que han tardado en arrancar:

– Firefox 7.0a1 2011-06-01 (x86): 4,096s
– Opera 11.50.1027: 4,349s
– Firefox 7.0a1 2011-06-01 (x64): 4,749s
– Internet Explorer 9.0.8112.16421 (x86): 6,021s
– Internet Explorer 10.0.1000.16394 (x86): 6,464s
– Chromium 13.0.781: 6,550s
– Safari 5.0.5.7533.21.1: 9,676s
– Internet Explorer 9.0.8112.16421 (x64): 34,767s

Los resultados me parecen curiosos, ya que se esperaba que Opera o Chrome fueran los vencedores, pero ha ganado Firefox, lo que me hace pensar que gran parte del desarrollo de las máquinas virtuales Javascript, es la optimización de casos comunes y particulares.…

Continuar leyendo...

El fin de Mono, y otros finales



Tras la adquisición de Novell por parte de Attachmate el pasado año, en los últimos días se ha tenido noticias del primer cambio sustancial, el despido del equipo de desarrollo encargado de Mono.

Independientemente de que Attachmate defienda los intereses de Microsoft, estamos en un periodo de intensa crisis económica, al menos en lo que se refiere a países desarrollados, y salvo que estrategicamente esté muy claro, no parece prudente invertir recursos en proyectos que tendrán un cuanto menos, complicado retorno de la inversión. En su día, en decadencia de MySQL, os hablaba de algo similar, en aquel caso, relacionando MySQL, con la compra de Sun por parte de Oracle.…

Continuar leyendo...

Powerbasic



Como muchos de vosotros, comencé programando en lenguaje BASIC. Por aquellos días era no estructurado (con números de linea), e interpretados. Además en mi caso, sobre un hardware de 8 bits.

Bastante tiempo después, con Turbo Basic, llegué a la compilación, que como ahora es conocido por todos, permitía transformar el código fuente, en este caso en código ejecutable nativo. Además Turbo Basic implementaba un dialecto de BASIC estructurado, que permitía evitar el código espagueti.

Turbo Basic 1.0 escrito por Bob Zale, y vendido a Borland, apareció en 1986, llegando a la revisión 1.1 de 1987.…

Continuar leyendo...

Kubuntu 11.04



Como ya viene siendo habitual cada 6 meses, acaba de presentarse Kubuntu 11.04.

A nivel de características, lo más destacable es el uso de KDE 4.6.2, que gracias a usar Qt 4.7.2, ofrece efectos y animaciones más trabajadas, al mismo tiempo que lo hace de forma más fluida. Esta mejora no es “sobre el papel”, sino que se aprecia claramente en equipos modestos, como mi Pentium 4 a 2,8 Ghz en el que lo he instalado.

La gestión de multimedia se hace ahora con GStreamer, que a pesar de causar algunas incompatibilidades, tiene la ventaja de usarse también en Ubuntu, con lo que se obtiene una comunidad más amplia de usuarios y desarrolladores, que lo irán mejorando con mayor agilidad.…

Continuar leyendo...

Lo que no me gusta de WordPress



Tras mi migración de Simple PHP Blog a WordPress, he familiarizándome con el funcionamiento interno de este CMS, encontrando por desgracia bastantes aspectos que no son de mi agrado.

WordPress es magnífico en mucho sentidos, tiene una herramienta de administración sencillo y cómodo; la cantidad de plugins y temas disponibles nos permiten personalizarlo a nuestro antojo con poco esfuerzo; y sobre todo, la cantidad de funcionalidades que soporta “out-of-the-box”, nos permiten cubrir casi cualquier necesidad.

Poca separación entre datos y presentación
No me malinterpretéis, la forma en que WordPress está programado, con sus temas que separan el código del sistema de la presentación es magnífica, sin embargo, la base de datos guarda el contenido de los posts, y de los comentarios directamente en código HTML, y en este sentido, no habría una peor forma de hacerlo si lo que queremos es separar los datos de la presentación.…

Continuar leyendo...

Rendimiento de variables dentro de cadenas en PHP



Tras la sorpresa de Rendimiento de constantes en PHP, os puedo adelantar que esta vez, probablemente lo hagáis de nuevo.

Se trata de concatenar variables a cadenas.

La primera forma, usa cadenas delimitadas por comillas simples, y el operador punto. La segunda usa el método heredado de Perl, de incluir las variables dentro del literal, naturalente, usando comillas dobles. La tercera, es igual que la primera, pero con comillas dobles, mientras que la cuarta y última, usa sprintf.

<?php $KI_MAX_ITER = 500000;   $fInicio=microtime(true); for ($iCont=0; $iCont<$KI_MAX_ITER; $iCont++) { $sRes = 'Esta es la iteración número ' .…

Continuar leyendo...