Entradas

Mostrando entradas de diciembre, 2008

Deletes de 25 minutos

Donde trabajo tenemos una base de datos de un volumen considerable (mas de dos teras).

Eso obliga a pensar mucho como se hacen las aplicaciones, lo que no siempre se hace.

Hoy me han planteado una queja "Oracle va mal, tengo una tabla con 13 filas y el delete de una me ha costado 25 minutos" (la culpa siempre se la echan a Oracle).

Nos ponemos a investigar y descubrimos que la tabla sólo tiene trece filas, pero es una tabla maestra de otras doce tablas, la mayor de ellas de 145 millones filas y la siguiente de 52 millones, el resto ni las miramos.

Como hay relaciones de dependencia antes de borrar el gestor de la base de datos tiene que recorrerse por completo cada una de esas tablas para ver si está en uso la clave de la fila a borrar.

Por eso va tan lento.

El lunes le diremos al equipo de desarrollo que tienen que pensar a lo grande. Si ese campo sólo se rellena desde la aplicación y el usuario escoge la descripción de un desplegable es imposible que se ponga un dato erroneo. …

¿QuadCore o DualCore?

Imagen
Siempre se me ha planteado la duda de que es mejor una CPU con mas cores o una con menos.

La respuesta es 'depende'.

Si vamos a usar una aplicación que aproveche que hay varios núcleos como el Photoshop es mejor un quad, reparte la carga y los tiempos muertos.

Pero si se usa para hacer experimentos con javascript (como en el post anterior) cuanto menos cores mejor.


Como se ve en la gráfica el consumo de CPU para esta operación pesada es del 54%, aunque en realidad lo que tenemos es una CPU al noventa y pico y la otra muerta de risa.

Si tuviera un quadcore tendría un consumo medio del 25%.

Aunque quizás lo que haya que hacer es retocar el programa, en javascript es difícil, pero en un lenguaje serio como C tampoco es muy fácil paralelizar las operaciones pesadas.

Programación genética

Imagen
La programación genética es la que persigue llegar a un objetivo mediante la prueba y error simulando a la genética que controla la evolución de los seres vivos.

Se parte de un objetivo al que hay que llegar, una formula para comprobar lo cerca que estamos de ese objetivo y una población de posibles soluciones que va evolucionando. Aparecen nuevos miembros de esa población mediante dos principios (mutación y cruce), se cogen los que mas se acercan al objetivo y se desechan los que mas se alejan.

Los usos son múltiples. Un ejemplo es el de Image evolution

Usa una versión reducida de lo que he contado para hacer aproximaciones de imágenes con polígonos (sólo usa mutación y trabaja con un único elemento mas su mutación, no hay cruce).

El algoritmo está en javascript y se ejecuta en el navegador (Firefox si, IE no). Va modificando el color y la posición de 50 polígonos de 6 caras aproximándose a la imagen original.

La idea está cogida de Genetic Programming: Evolution of Mona Lisa, un blog de …