Archivo

Entradas Etiquetadas ‘Programación’

c++ : Imprimir a fichero o salida estándar de forma genérica

Miércoles, 17 de marzo de 2010 piponazo 1 comentario

Cuando queremos mostrar datos al usuario en nuestros programas normalmente tenemos que elegir entre mostrarlos por la salida estandar o a un fichero. En C++ se suele utilizar la clase std::cout para hacer referencia a la salida estandar y std::ofstream para manejar flujos de salida. No obtante, podemos utilizar la clase std::streambuf para referenciar a los búferes de las clases anteriores y así poder trabajar en nuestros programas de forma genérica. Leer más…

GD Star Rating
loading...
  • Share/Bookmark

C/C++: Calificador restrict

Sábado, 13 de marzo de 2010 piponazo 3 comentarios

cpp1

Hay que ver lo que son las cosas. Leyéndome un libro de OpenMP descubro una característica de C/C++ bastante importante que había pasado inadvertida para mi durante todos estos años que llevo programando. Resulta que el calificador restrict (o __restrict__ en C++) permite especificar si sabemos a ciencia cierta si el puntero al que añadimos este calificador apunta a un objeto que no es apuntado por ningún otro puntero. Esto es especialmente útil para programas científicos donde los cálculos realizados sobre matrices abundan especialmente. Lo realmente interesante es que al usar este calificador el compilador puede introducir algunas mejoras en el código objeto resultante que mejorarán la eficiencia, y por tanto el tiempo de computo, de nuestros programas. A continuación os muestro unos ejemplos sencillos de como usar el calificador y los tiempos de ejecución obtenidos.

Leer más…

GD Star Rating
loading...
  • Share/Bookmark
Categories: General Tags: , , ,

Octave: Instalando paquetes

Viernes, 19 de febrero de 2010 piponazo 4 comentarios

Octave esun lenguaje de alto nivel principalmente orientado a computación numérica. Junto a Scilab, plantan cara a la conocida suite Matlab, pero eso si de forma gratuita. No obstante Octave es parte del proyecto GNU y por lo tanto con licencia GPL, algo a lo que Scilab no se acoge y por lo tanto me he decantado por empezar a usar el primero. He de decir que es compatible con la mayoría de la funcionalidad que existe en Matlab, pudiendo trabajar con los mismos ficheros de funciones que desarrollan investigadores de todo el mundo y con los mismos ficheros de datos que Matlab almacena.

Leer más…

GD Star Rating
loading...
  • Share/Bookmark

Bash script: Midiendo el tiempo de ejecución de programas

Sábado, 6 de febrero de 2010 piponazo Sin comentarios

El comando time en GNU/Linux nos permite conocer muchos detalles sobre el tiempo de ejecución de otro comando o aplicación que ejecutemos. Cuando ejecutamos el programa time sin ninguna opción obtenemos una salida similar a la siguiente

 time comando argumentos
...
salida comando
...
real	0m0.010s
user	0m0.010s
sys	0m0.000s

Donde real indica el tiempo que ha pasado desde que se ejecuta el comando hasta que termina, user indica el tiempo usado por el proceso en modo usuario y sys muestra el tiempo usado por el sistema en manejar el proceso (modo kernel). Generalmente se coge como el tiempo de ejecución de un programa a la suma de las cantidades retornadas por user y sys, ya que si el sistema tiene una carga de procesamiento importante Leer más…

GD Star Rating
loading...
  • Share/Bookmark

OpenCv 2.0: Problemas con soporte OpenMP

Miércoles, 27 de enero de 2010 piponazo 6 comentarios

En la nueva versión de OpenCV por defecto está desactivado el uso de OpenMP pero este se puede activar de forma sencilla. Sin embargo al activar el uso de OpenMP, muchas personas se quejan de que algunas funciones de la librería dejan de funcionar. El caso más conocido es el de la función imwrite con la que podemos guardar imágenes y matrices. Mucha gente ha sufrido este problema y hasta ahora nadie había ofrecido una solución, pero recientemente he descubierto la causa de esta extraña situación. Leer más…

GD Star Rating
loading...
  • Share/Bookmark