Archivo de la categoría Programación

GCC y OpenMP



Personalmente no me sorprendieron las limitaciones de OpenMP en Visual C++. De la misma manera tampoco puedo decir que me encaje que el código generado por G++ sea menos eficiente que el de Visual C++.

Lo que no entiendo en absoluto, es por qué la actual versión de 4.1.2 de GCC/GPP, no soporta OpenMP.

Realmente es incompresible que un compilador abierto como GCC, no apoye un estándar también abierto como OpenMP, haciéndonos tener que esperar hasta la revisión 4.2.

Una vez más se demuestra que aunque Microsoft no hace todas las cosas bien, los demás tampoco consiguen hacerlas mejor. En el caso que nos ocupa, siempre nos quedará la ayuda del compilador de C++ de Intel.…

Continuar leyendo...

VS 2005 no es compatible con Vista



A finales de diciembre de 2006 apareció el Service Pack 1 para Visual Studio 2005.

A pesar de la proximidad con el lanzamiento de Windows Vista, incluso con esa actualización daba algunos problemas, por lo que hace pocos días Microsoft lanzó Visual Studio 2005 Service Pack 1 Update for Windows Vista, un parche de 28 Mb para ser aplicado sobre el SP1, que soluciona estos problemas.

Muy mal por los chicos de Redmond… ¡Que la herramienta de desarrollo estrella para Windows, haya necesitado 2 parches para soportar el nuevo sistema operativo!



Continuar leyendo...

Acelerar BDS



Si hay algo que defina los productos de Borland (ahora CodeGear) desde hace mucho tiempo, es la calidad y facilidad de sus IDE, y el pobre rendimiento del código generado.

Tanto Delphi, como C++ Builder, o el nuevo Borland Developer Studio 2006, están programados con Delphi, lo que hace que a no ser que tengamos una máquina muy potente, acaben siendo poco ágiles.

Para solucionar esto tenemos DelphiSpeedUp, que se encarga de aprovechar el trabajo realizado por los proyectos FastCode y FastMove, reemplazando las funciones de Delphi más usadas por versiones optimizadas para nuestra CPU.

DelphiSpeedUp es capaz de acelerar el desempeño de nuestro Delphi/C++ Builder/Borland Developer Studio desde la versión 5 hasta la 2006.…

Continuar leyendo...

Explorer PC



Explorer PC es un gestor de archivos que visto de lejos, tiene un gran parecido con el Explorer de Windows 95 y NT.

Si se entra más en detalle, veremos que en realidad es una aplicación DOS, que imita la apariencia del de Windows. Hasta aquí debemos reconocer el mérito del programador, que ha conseguido (sin toolkits de terceros), darle un increíble parecido. Para mi sorpresa, está escrito enteramente en ensamblador (TASM), lo que explica que el ejecutable no llegue a 12 Kb sin ninguna dependencia externa, y tenga una velocidad de ejecución excelente.

Para funcionar requiere solamente un procesador 80188/80186 con memoria XMS y una tarjeta gráfica VESA.…

Continuar leyendo...

x86 vs x64 (Continuación)



Si te perdiste la primera parte, la puedes leer en el artículo x86 vs x64, si fuiste de los que leyeron recordarás que se dejó como "deberes", optimizar la aplicación para que usase varios hilos de ejecución, y así resultar más veloz en equipos de varios nucleos.

Para no complicarlo demasiado, he optado por usar OpenMP, de forma que añadiendo un par de lineas más al fuente original fuera suficiente:

#include <stdio.h>
#include <time.h>
#include <omp.h>

void __cdecl main (void)
{
__int64 iCount, iRes;
unsigned int iInicio, iFin;

iInicio=clock();

iRes=0;
#pragma omp parallel for
for (iCount=1; iCount<=10000000000; iCount++)
{
iRes+=iCount;
iRes--;
}
iFin=clock();
printf("%I64d %d\n", iRes, iFin-iInicio);
getchar();
}

He omitido la publicación de los listados en ensamblador, pues son bastante extensos debido a los diferentes procedimientos que ejecutan la rutina, y al código necesario para lanzar los threads.…

Continuar leyendo...

x86 vs x64



Para comprobar la ganancia que se podría obtener compilando para Windows 64 bits las aplicaciociones de 32 bits, he hecho un pequeño ejemplo que utiliza aritmética de 64 bits, y que pueda ser utilizado como benchmark comparativo.

Intentando que sea lo más real posible, he configurado el Visual C++ 2005 SP1 para que utilice en x86 instrucciones SSE2 (/arch:SSE2), y así poder manipular la información en bloques de más de 32 bits, aunque como se verá más adelante, el compilador no ha considerado que se obtenga ningún beneficio usándolas.

El programa utilizado, simplemente realiza un bucle de 10 millardos de iteraciones, donde se ejecuta una suma y un decremento.…

Continuar leyendo...

JLC's Internet TV



Tras mucho tiempo de ir probando de forma esporádica programas para ver la televisión por internet, he dado con JLC's Internet TV.

JLC's Internet TV concentra en menos de 200 Kb un completísimo programa para Windows que permite ver la televisión por internet. Es sencillo de utilizar, gratuito e incluye más de 1300 canales preconfigurados (incluso españoles).

El programa no necesita ser instalado, ni escribe en el registro, por lo que es perfecto para los defensores de las aplicaciones mal definidas como portables (aquellas que pueden ser ejecutadas directamente desde un Pendrive sin necesidad de ser instaladas previamente).…

Continuar leyendo...

Instalar MySQL en otro directorio



Para instalar bajo Windows el servidor MySQL en otro directorio diferente al que se usa por defecto (c:\mysql), inclusive si el nuevo directorio contiene nombres de archivo largos, solamente hay que agregar un par de lineas al archivo de configuración my.ini ubicado en la carpeta de Windows (por defecto C:\Windows), de manera que el servidor sepa donde localizar los recursos.

Dentro de la sección mysqld, añadiremos o modificaremos los siguientes parámetros:
– basedir
– datadir

Hay que tener en cuenta que se deben reemplazar las contrabarras de Windows (\) por barras (/).

Si el nombre de directorio es largo, o contiene espacios, habrá que especificarse el correspondiente nombre corto.…

Continuar leyendo...

Juego de instrucciones x86



Por pura casualidad, mientras le echaba un vistazo al Lazy Assembler (LZASM), un ensamblador para DOS y Windows compatible con el modo ideal de Turbo Assembler (TASM), casi me caigo de culo al ver la cantidad de instrucciones que soportan los procesadores actuales.

A pesar de que no toco ensamblador en serio desde hace años, creo que sabría utilizar de memoria, al menos el 80% de las instrucciones 8088/8086, y digamos un 60% de las del 386. Para las arquitecturas más nuevas, digamos que las instrucciones añadidas me suenan, pero poco más.

En x87 nunca fui un experto, por lo que para hacer algo basado en un 8087, sin duda necesitaría al menos documentación de referencia.…

Continuar leyendo...

JSON



JSON (Javascript Object Notation), es una librería diseñada para intercambiar datos entre diferentes lenguajes y plataformas.

Se soportan desde ActionScript hasta Squeak. Pasando por C, C++, Coldfusion, Delphi, Javascript, Perl, PHP, Python, Ruby, …

Los datos se almacenan de una forma sencilla, y que es facilmente entendible por un humano, al mismo tiempo que el proceso de codificación y decodificación es eficiente.

Pretende ser una alternativa ligera a XML, por lo que no es de extrañar que haya conversores de archivos XML a JSON.

Para que os hagáis una idea, podéis echarle un vistazo a estos ejemplos, con sus equivalentes en XML.…

Continuar leyendo...

Uso de cookies

Esta web utiliza cookies para mejorar la mejor experiencia de usuario. Si continúas navegando estás dandos tu consentimiento para la aceptación de las mismas y la aceptación de la política de cookies, pincha el enlace para más información.

ACEPTAR
Aviso de cookies