False Sharing

Actualmente todas las computadoras están formadas por varios procesadores, por esta razón el desarrollo software está evolucionando hacia el procesamiento en paralelo con la finalidad de explotar al máximo posible estas máquinas. Este tipo de procesamiento nos permite utilizar cada una de las CPUs de nuestra máquina de forma simultánea para realizar un conjunto de operaciones independientes unas de otras. Pero no siempre ejecutar una aplicación de forma concurrente significa que se vaya a ganar rendimiento de forma inmediata, incluso en ciertas ocasiones se puede perder si el procesamiento concurrente no se gestiona de forma correcta.

Una de las principales causas que provocan una disminución de rendimiento es la sincronización entre los distintos procesadores. Esto es debido a que los procesadores generalmente tienen entre dos y tres niveles (L1, L2,…) de memoria caché en los cuales se va replicando la información de la memoria del sistema cuyo acceso suele ser lento mientras que el acceso a estos tipos de memoria es mucho más rápido. La velocidad de acceso va aumentando en función del nivel de la caché, a mayor proximidad a la CPU (L1) mayor velocidad.

figure1 Sigue leyendo

Anuncios

Primeros pasos con MongoDB

De vez en cuando, leyendo blogs o webs de desarrollo software, te llama la atención alguna tecnología nueva (o no tan nueva) de la cuál te gustaría saber más. Esto es lo que me ha pasado con las bases de datos NoSQL. Desde que estoy metido en el mundillo de la informática siempre he trabajado con bases de datos relacionales (un poco de MySQL, un poco de Oracle y un mucho de SQL Server) y nunca había usado las bases de datos NoSQL. Ya desde hace algún tiempo, cada vez que oía algo de este tipo de bases de datos me ponía a pensar ¿cómo funcionará esto?

mongodb

Antes de meterme a investigar sobre este tipo de bases de datos mi primera impresión era que estaban aún muy verdes, una tecnología que todavía tenía mucho camino que andar para implantarse en sistemas profesionales y en empresas. Como veremos más adelante, estaba bastante equivocado.

Sigue leyendo

LightSwitch o como no reinventar la rueda cada día.

En un porcentaje muy elevado las aplicaciones que tenemos que desarrollar en mi trabajo tienen la típica una interfaz de usuario para visualizar, modificar, añadir y eliminar datos. En algunos casos incluso ni es para el usuario final, sino para modificar datos que el usuario ni sabe de ellos ni le interesan.

En un desarrollo “tradicional” dedicamos mucho tiempo a tareas repetitivas, clases para dar soporte a la base de datos, vistas y más vistas para la interfaz de usuario y además la lógica de negocio correspondiente (esta es difícil quitártela de encima). Todo esto es lo que por aquí conocemos como “reinventar la rueda”.

Con LightSwitch, gran parte del trabajo repetitivo ya lo tenemos que hacerlo y básicamente nos centramos en la lógica de negocio.

Sigue leyendo

Desarrollo en Android: Más allá del Hola Mundo!

Actualmente el desarrollo de aplicaciones para plataformas móviles es uno de los temas más atractivos para un desarrollador de software. En mi caso particular he optado por empezar mi “aventura” desarrollando una aplicación para Android debido a que es el sistema operativo móvil al que más habituado estoy y me parece una opción llamativa.

Es habitual que cuando se empieza a aprender un lenguaje de programación nuevo uno de los primeros ejemplos que se implemente es el conocido “HolaMundo”. Sin embargo, dado que Android utiliza lenguajes ya conocidos como Java o XML, considero de mayor utilidad explicar un poco el proceso que he seguido para empezar mi primera aplicación, así como algunos de los conceptos básicos que he aprendido por el camino.

Sigue leyendo