Ejecutar Matlab en linux

Tras instalar Matlab en linux, para utilizarlo es necesario ejecutar un script llamado «matlab». Este se encuentra en la carpeta en la que hiciste la instalación, bajo el directorio /bin (ej: /opt/matlab/bin/matlab).

Cada vez que quieras usar este programa tendrás que abrir un terminal y ejecutar dicho script. Para un uso puntual puede no ser un inconveniente, pero si lo usas habitualmente llega a ser molesto (a mi ya me molesta el simple hecho de tener que tener la ventana del terminal abierta, aunque la tenga minimizada).

Para evitar esto hay varias formas, de las que hoy muestro 3:

Hacer un alias.

Esto en realidad es una solución parcial. Aún tienes que ejecutarlo desde la terminal y si la cierras, también cierras Matlab. La única ventaja que consigues e no tener que teclear el comando completo.
Para ello modificamos el archivo .bashrc (o lo creamos si no existe.Es un archivo oculto situado en el home de nuestro usuario). Añadimos la siguiente línea

 alias matlab='/opt/matlab/bin/matlab'

Cada uno debe substituir «/opt/» por la carpeta en donde instaló Matlab.

Finalmente, ejecutamos:

$ bash

De esta forma, con solo escribir «matlab» en la terminal, este se ejecutará (nos ahorramos tener que escribir la dirección del archivo en cada ocasión)
Dependiendo de la distribución que usemos, «.bashrc» puede ser o no tenido en cuenta cada vez que abramos una terminal, por lo que es posible que haya que repetir el último paso cada vez. ( Esto se podría solucionar, pero no he buscado la forma porque esta solución no me parece un gran avance… )

Crear un acceso directo.

Esta solución, aunque no es mi preferida (no me gusta tener iconos en el escritorio) al menos si que evita tener que abrir una terminal y teclear un comando. El acceso directo lo creamos de la manera habitual (no digo cual, porque dependerá del escritorio que se use) y en donde nos pidan la aplicación a ejecutar ponemos:
/opt/matlab/bin/matlab -desktop

Una vez más, «/opt» debe ser cambiado por la carpeta en donde instalaste Matlab.
La opción -desktop (con un solo guión delante «-«) nos permite abrir Matlab en una ventana sin que esté ligado a una sesión de terminal.

Nota: Como se ha mencionado antes, el archivo que estamos ejecutando es un script. Abriéndolo con un editor de textos (cualquiera vale) podemos ver todas las opciones que admite.

Utilizando Alt+F2

Por lo ágil que es su uso, esta es sin duda mi opción favorita (aunque no tiene que ser la tuya, claro).

Si no conoces la opción Alt+F2, deberías probarla. Te permite ejecutar un programa con solo escribir su nombre (en KDE, reconoce el programa con solo escribir las tres primeras letras!). Como dije antes, con un poco de práctica permite usar el ordenador de una forma más ágil.

Para conseguir que esta opción funcione, primero creamos un script:

#!/bin/bash -
#===============================================================================
#
#          FILE:  matlab.sh
#
#         USAGE:  ./matlab.sh
#
#   DESCRIPTION:  Lanzador de matlab
#
#       OPTIONS:  ---
#  REQUIREMENTS:  ---
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR: bronshtein
#       COMPANY:
#       CREATED:
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

RUTA="/opt"
$RUTA/matlab/bin/matlab -desktop

Tras darle permisos de ejecución (tenemos que estar como root,

# chmod +x <em>nombre_del_script</em>

lo copiamos a una carpeta que esté en el path de nuestro usuario.

$echo $PATH

(Esto nos dará una lista de carpetas, hay que copiar el script anterior a una de ellas)

Aunque produzca el resultado que más me gusta, no acabo de estar satisfecho. Añadir scripts a las carpetas no me parece ordenado, preferiría tener mis scripts y programas en una carpeta aparte. He probado tanto a añadir nuevas carpetas al path como enlazando simbólicamente en vez de copiando, pero krunner (uso KDE) no me las ha reconocido de ninguna de las dos formas. Si alguien sabe cómo conseguir esto (o tiene alguna idea que le parezca que puede funcionar), agradecería que lo dijera en los comentarios.

Como montar una pagina web en Dropbox

El servicio en la nube Dropbox ofrece la posibilidad de subir archivos de forma que puedan ser descargados públicamente. Esto nos ofrece la posibilidad de montar una pequeña página web que, si bien está muy limitada, puede llegar a sernos útil.

Para ello basta con colgar los archivos .html de nuestra página en la carpeta «Public» de Dropbox. Una vez hecho esto, la dirección la obtienes pulsando con el botón derecho sobre el archivo -> Copy public link.
Esta dirección tiene la siguiente estructura:

 http://dl.dropbox.com/u/número_de_usuario/nombre_del_archivo 

en donde

  • número_de_usuario: es un número que identifica a cada cuenta de Dropbox. Siempre es la misma para cada usuario
  • nombre_del_archivo: es exactamente el mismo nombre con el que has subido tu archivo

Esto hace que la ruta de los archivos sea predecible y por tanto, es sencillo enlazar varias páginas subidas a la misma cuenta.

En pocas palabras:

¿Qué no se puede hacer?:

  •  Cualquier operación que no sea realizada por el ordenador del usuario (bases de datos… )

¿Qué si se puede hacer?:

  • Enlazar otras páginas (estén o no alojadas en Dropbox)
  • Cualquier cosa que se te ocurra, mientras sea tú ordenador el que trabaje…
  • Tener una página web disponible durante un tiempo indefinido, independientemente de que tenga o no visitas.

Y para muestra, un botón…

Web de prueba subida a dropbox

Web de prueba subida a mi dropbox

Como podéis ver, para cosas muy muy simples, puede servir…

El código (por si lo queréis probar sin tener que hacer vosotros mismos la página ) es este:

<!DOCTYPE html>
<html>
<title>MiniWeb</title>
<body>
  <h1>MiniWeb</h1>
  <p></p>
  <p> Esta es una página de prueba, enlazando a un video de youtube.com </p>
  <object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/u7Dg3LrhmIY?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/u7Dg3LrhmIY?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object>
  <p> Si te gusta la canción, esta y mucha más música libre está disponible en jamendo.com </p>
</body>
</html>

Extraer sonido de videos flash

En ocasiones puede ser que quieras quedarte sólo con el audio de un archivo que tienes en formato Flash Video (.flv, el que usan webs como youtube). Para ello puedes extraerlo y guardarlo como un mp3 con ffmpeg  de la siguiente forma:

 ffmpeg -i video_original.flv audio_destino.mp3

Si lo que quieres es hacer esto mismo en un gran número de vídeos, aquí tienes un script bash que lo hace por ti (lo siento, no funciona en windows):

#!/bin/bash - 
#===============================================================================
#
#          FILE:  flv2mp3
# 
#         USAGE:  ./flv2mp3 
# 
#   DESCRIPTION:  Extrae la pista de música de un archivo flash
#                 y lo guarda como mp3
#
#       OPTIONS:  ---
#  REQUIREMENTS:  ffmpeg,xterm
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR:  ---
#       COMPANY: 
#       CREATED: 02/14/2012 08:38:01 PM CET
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

clear 
echo ===============================================================================
echo
echo Introduzca la ruta \(relativa\) en la que se encuentran el\(los\) video\(s\) originales
echo Se extraerá el audio de todos los archivos con extensión .flv y se
echo guardará en formato mp3
read -p ">>" RUTA
echo ===============================================================================
echo
echo

RUTA=$RUTA/
# Comprobamos que existe algún archivo

if [ -e "$RUTA"aa ]
then
	ls $RUTA*.flv > /dev/shm/listado_flv    # Guardamos la lista de los 
	echo listado_flv:                       # archivos flash en la memoria ram
	echo -------------------------------------------------------------------------------
	cat /dev/shm/listado_flv
	echo
	echo -------------------------------------------------------------------------------
else 		               			      
	echo en $RUTA no se han encontrado archivos .flv
	exit
fi

# Procesamos los archivos

if [ -e /dev/shm/listado_flv ]
then
	echo ===============================================================================
	echo 
	while read ARCHIVO
	do
		echo ·Procesando "$ARCHIVO"
		NOMBRE=$(echo $ARCHIVO | awk -F . {'print $1'})
		xterm  -e ffmpeg -i "$ARCHIVO" "$NOMBRE".mp3
	done < /dev/shm/listado_flv
	# Borramos la lista de la ram
	rm /dev/shm/listado_flv
else
	echo ERROR: No se ha podido escribir la lista a /dev/shm

fi

echo Finalizado


Una vez que lo ejecutas, te pide la ruta relativa a la carpeta en donde se encuentran los vídeos. Tras esto el programa va extrayendo el audio y guardándolo en formato mp3 y con el mismo nombre que el vídeo del cual procede.

ffmpeg es un programa muy potente, por lo que modificándo un poco el script (que por cierto, si quieres, puedes 😉 ) se puede lograr que guarde el audio en otros formatos, o que realice infinidad de modificaciones tanto sobre el vídeo, como el audio o incluso los subtítulos.

Por último, dos anotaciones:
1º. Por algún motivo que se me escapa, tras procesar el primer archivo, el script no sigue trabajando con el resto de los vídeos (lo que sí sé es que es culpa de ffmpeg). Para solucionarlo lanzo el proceso en un terminal aparte con xterm.
2º. No fui capaz de hacer que ffmpeg no imprimiese la salida en la pantalla, pero al usar un terminal aparte consideré que era mejor opción poder ver lo que está haciendo.

Alguien sabe por que pasa esto??

El vboxdrv perdido

 

Para poder iniciar una máquina virtual en VirtualBox es necesario que antes hayamos cargado en el kernel el módulo vboxdrv.
Este módulo se instala al mismo tiempo que VirtualBox, por lo que por lo general ya lo tienes preparado para ser cargado. El caso es que tras una actualización del kernel, lo perdí y tuve que volver a compilarlo e instalarlo.
Por si alguien tiene el mismo problema, para hacerlo entramos desde la terminal en el directorio /usr/src/vboxhost-4.1.8/vboxdrv/ y una vez allí ejecutamos

make
make install

Tras esto ya podemos cargar el módulo en el kernel e iniciar nuestras máquinas virtuales.

  • Nota: el directorio que se indica corresponde a la instalación realizada con el instalador ofrecido por virtualbox.org. Si lo instalaste desde las fuentes o de otra forma no puedo asegurar que la ruta sea esa.

 

Para cargar el módulo se pude hacer de forma permanente añadiendo a /etc/rc.d/rc.local:

[# Start vboxdrv
if [ -x /etc/rc.d/rc.vboxdrv ]; then
/etc/rc.d/rc.vboxdrv start
fi

y a /etc/rc.d/rc.local_shutdown:

# Stop vboxdrv
if [ -x /etc/rc.d/rc.vboxdrv ]; then
/etc/rc.d/rc.vboxdrv stop
fi

(ambos códigos son copiados del archivo README.SLACKWARE que incluye el slackbuild proporcionado por slackbuilds.org para VirtualBox-4.1.4)

Si por el contrario solo se quiere cargar el módulo de forma ocasional (por ejemplo porque no vas a usar VirtualBox la mayoría de las veces que vas a usar el ordenador) lo puedes cargar con:

root#: modprobe vboxdrv

Instalar VirtualBox en Slackware (válido para más linux)

Hasta ahora cada vez que necesitaba instalar VirtualBox, lo hacía mediante los slackbuilds proporcionados por slackbuilds.org (página que recomiendo si usas Slackware). Sin embargo este método implica descargar varios archivos y compilarlos, con lo que se tarda bastante tiempo.
Sin embargo hoy me he dado cuenta que en la página oficial de VirtualBox ofrecen un instalador genérico para cualquier linux ( un .run) que en poco tiempo lo hace él todo ahorrándonos bastante trabajo.
Para descargarlo, vamos a esta dirección si nuestro procesador es un i386 o a esta otra si tenemos un AMD64.
Una vez hecho eso, damos privilegios de ejecución (chmod +x ) e instalamos.

El mayor inconveniente que le encuentro a este método es que si empleas pkgtool, VirtualBox no aparecerá como un paquete instalado y por tanto no lo podrás desinstalar desde él. Por lo demás, tras estarlo usando un tiempo no he notado diferencias respecto a las otras veces que lo usé.

Por último destacar que a diferencia de la instalación por slackbuilds, de esta forma no estás obligado a crear un grupo para poder usar VirtualBox, así que cualquier usuario puede usar el programa. Sin embargo, si quieres instalar las GuestAdditions (para poder usar los USB, compartir archivos entre sistemas…) sí que es necesario pertener a este grupo.

Acelerando linux

INTRODUCCIÓN:
Generalmente cualquier programa de linux que tengas en tu ordenador estará compilado con gcc. Sin embargo hay otras alternativas que pueden conseguir que estos sean más rápidos. En concreto estoy pensando en ekopath, un compilador del que ya hablé aqui y que aunque aún está en pruebas ya permite compilar algunos programas.

Uno de estos programas, (en realidad es un conjunto de pequeños programas, pero se distribuyen juntos) es «coreutils». Estos son aplicaciones como cp, mv, ls, rm, md5sum… que si acostumbras a usar la terminal estarás habituado a utilizarlos continuamente.
A continuación pongo una comparativa entre las mismas aplicaciones compilados con uno y otro compilador:

Con ekopath:

RESULTADOS PARA: ekopath (Tiempo Usuario/Tiempo Sistema/Tiempo Total)
==============================================================================
/coreutils/coreutils-8.13/test/base64.test       0.223   2.24    2.463
/coreutils/coreutils-8.13/test/cat.test          0.138   0       .138
/coreutils/coreutils-8.13/test/cksum.test        0.123   1.937   2.060
/coreutils/coreutils-8.13/test/cp.test           0.846   0.001   .847
/coreutils/coreutils-8.13/test/date.test         0       0       0
/coreutils/coreutils-8.13/test/dd.test           3.162   0.306   3.468
/coreutils/coreutils-8.13/test/ls.test           0       0       0
/coreutis/coreutils-8.13/test/md5sum.test        0.13    1.803   1.933
/coreutils/coreutils-8.13/test/mv.test           0       0       0
/coreutils/coreutils-8.13/test/rm.test           0.024   0       .024
/coreutils/coreutils-8.13/test/sha1sum.test      0.14    2.348   2.488
/coreutils/coreutils-8.13/test/sha224sum.test    0.12    5.172   5.292
/coreutils/coreutils-8.13/test/sha256sum.test    0.126   5.164   5.290
/coreutils/coreutils-8.13/test/sha384sum.test    0.136   3.427   3.563
/coreutils/coreutils-8.13/test/sha512sum.test    0.124   3.45    3.574

Con gcc:

RESULTADOS PARA: gcc (Tiempo Usuario/Tiempo Sistema/Tiempo Total)
==============================================================================
/coreutils/coreutils-8.13/test/base64.test       0.396   4.307   4.703
/coreutils/coreutils-8.13/test/cat.test          0.27    0       .27
/coreutils/coreutils-8.13/test/cksum.test        0.242   3.79    4.032
/coreutils/coreutils-8.13/test/cp.test           1.709   0.001   1.710
/coreutils/coreutils-8.13/test/date.test         0       0       0
/coreutils/coreutils-8.13/test/dd.test           6.269   0.566   6.835
/coreutils/coreutils-8.13/test/ls.test           0       0       0
/coreutils/coreutils-8.13/test/md5sum.test       0.261   3.138   3.399
/coreutils/coreutils-8.13/test/mv.test           0       0       0
/coreutils/coreutils-8.13/test/rm.test           0.062   0       .062
/coreutils/coreutils-8.13/test/sha1sum.test      0.274   4.433   4.707
/coreutils/coreutils-8.13/test/sha224sum.test    0.279   8.916   9.195
/coreutils/coreutils-8.13/test/sha256sum.test    0.279   8.915   9.194
/coreutils/coreutils-8.13/test/sha384sum.test    0.268   5.893   6.161
/coreutils/coreutils-8.13/test/sha512sum.test    0.256   5.916   6.172

La primera columna nos indica qué programa se ha probado y la última nos dá el tiempo medio total que empleó el programa en las diez veces que realicé el test en cada caso.
Como se puede ver, los tiempos de la vesión compilada con ekopath son aproximadamente la mitad en todos los casos y si se suma todo el tiempo empleado obtenemos un total de 31.14 segundos con ekopath frente a los 56.44 segundos empleados por gcc.

Estas diferencias de rendimiento pueden ser suficientes para lograr una sensación de fluidez a la hora de trabajar con tu ordenador.

Por otro lado, es curioso comprobar como los programas compilados con ekopath ocupan menos que los compilados con gcc (25.1 MiB frente a 27.8 MiB)

LAS PRUEBAS:

Nota: cuando escribí esto añadí un enlace para descarar los scripts que utilizaba en las pruebas. Sin embargo el enlace estaba roto y hace tiempo que perdí los archivos, por lo que opté por eliminarlo. De todas formas las pruebas aquí realizadas no son en absoluto rigurosas ni confiables, por lo que tampoco es una gran pérdida.

Para realizar los test escribí varios scripts para automatizar el proceso. Uso 3 tipos de scripts:
a) Ordenes de compilación: (el nombre me lo he inventado) En ellos ejecuto el trío config-make-make install pero pasándole los parámetros deseados (compilador a usar, directorio de instalación, nivel de optimización etc)
b) Test: Son las pruebas propiamente dichas, tienen una parte común a todas ellas en la que guardan los resultados y otra que es específica del programa que se pretende probar.
c) ccs.sh: Este script es el que se encarga de llamar a los otros y sirve de interfaz de cara al usuario.

Para compilar, con gcc solo le añado la ruta en donde quiero que se instalen (no quiero que me sobreescriban los que trae mi distribución por defecto, y menos sin haberlos probado antes!!). Con ekopath, además de lo anterior, pongo como compiladores a los de ekopath y no a los de gc:

./configure CC="pathcc" CXX="pathCC" CPP="pathcc -E" CXX="pathCC -E" --prefix=$PREFIX
make
make install

En las pruebas, ejecuto el programa time pasándole como parámetro la aplicación que quiero probar. Aunque time proporciona muchos más datos, solo me he quedado con los relativos al uso de la cpu. Por último, es posible que en tu ordenador tengas dos versiones distintas de time, una es la del proyecto gnu y la otra es una implementación propia de la shell que uses (bash…). En los test preferí usar la de gnu, por lo que es importante usar este programa empleando «/usr/bin/time» y no sólo «time». Más información de este comando en wikipedia y en la página del manual (bash$ man time).

Por último añadir que con la última nighty-build de ekopath no pude compilar con éxito los programas. Puede que haya sido culpa mía, pero por si acaso dejo también un enlace a la versión anterior.

ÚLTIMOS COMENTARIOS:

Aunque los programas aquí compilados no son los que más recursos consumen del ordenador, hay que tener en cuenta que la mayor parte de las veces se usan combinándolos entre si para formar scripts, por lo que el tiempo ahorrado en conjunto podría llegar a ser muy grande.
Por otro lado, aunque una diferencia de un segundo, o incluso menos, no marque ninguna diferencia a la hora de realizar tus tareas si que se llega a apreciar pudiendo hacer que la experiencia del usuario sea mucho más fluída y ágil.

A medida que avanza la liberación de la versión definitiva de ekopath, es de esperar que más y más programas compilen sin errores. A su vez, también cabe suponer que mejorará el rendimiento obtenido con gcc, por lo que es probable que en los próximo años se aumente el rendimiento de las distribuciones linux de una forma más que apreciable.

==============================================================================================

ENLACES PERDIDOS POR LA ENTRADA:
Jugando con ekopath (I)……………………………..https://bronshtein.wordpress.com/2011/07/06/jugando-con-ekopath-i
Última versión de coreutils………………………….http://ftp.gnu.org/gnu/coreutils/coreutils-8.13.tar.gz
Comando time (versión gnu)………………………..http://en.wikipedia.org/wiki/Time_%28Unix%29

Ironía

Perder todos los datos que tenías en el ordenador es como mínimo molesto.

Perderlos por un error tuyo (como pulsar «enter» sin querer cuando estabas escribiendo «rm -r /home/carpeta_usuario») además de ser molesto, hace que te sientas idiota.

Hacer todo esto cuando se supone que intentas hacer una copia de seguridad de los datos importantes para no perderlos es… irónico.

Al menos ahora me sobra el espacio en el disco duro…

Jugando con Ekopath (I)

Hace unas semanas que salió el anuncio de que el compilador ekopath será liberado como opensource (bajo la licencia GPL).
Ekopath es un compilador de alto rendimiento para las arquitecturas Intel y AMD de 64 bits que promete mejores rendimientos que gcc (el compilador opensource por excelencia), pudiendo llegar en algunas aplicaciones a triplicar el rendimiento. En la página web Phoronix se publicaron unas comparativas de rendimientos de programas compilados con los dos compiladores (el post es anterior a que se anunciara la liberación, por lo que usaron el seudónimo de «Dirndl»).

Para comprobar hasta que punto se notan las diferencias, podemos descargar la nightly build que ofrecen en la página de pathscale (la versión definitiva aún no está disponible. Además también puedes descargarte el código fuente desde este repositorio git).

Las pruebas fueron realizadas en un Core2Duo con 2Gb de ram y bajo Slackware64 13.37 (en esta entrada sólo voy a analizar un programita que básicamente hace muchas multiplicaciones, para poder ver si se aprecia la diferencia entre un compilador y otro. Más adelante intentaré compilar cosas mas interesantes… 😛 )

Una vez descargado el nigthly build, se le dan privilegios de ejecución (chmod +x ekopath-…-installer.run) y se ejecuta desde la terminal. De esta forma se inicia el instalador. En un punto de la instalación se pide la ruta al archivo de licencia, con dejarlo en blanco y darle a «siguiente» ya está.

Ya tenemos el compilador instalado… ahora a probarlo! Por ejemplo con este código de c++

#include <iostream>
#include <time.h>

using namespace std;
int mult()	//Solo sirve para perder el tiempo
{
	int k;
	int h;
	int kh;
	k=53;
	h=67;
	kh=k*h;
	return kh;
}
int main()
{
	long i =2;
	long j=1;
	int s;

	for (j=1;j<=2000;j++)
	{	
		for (i=1;i<=9999;i++)
		{	
			s=mult();
		}	
	}
}

Cuando intenté compilar este código con ekopath, tuve problemas porque intentaba compilar desde la carpeta en donde tenía instalado pathCC (el compilador para c++, para c sería pathcc). Hasta que no lo compilé desde la carpeta en donde tenía el código fuente me daba errores con las librerías, supongo que por un problema en las rutas.
Para compilar:

$ ~/ekopath-4.0.10/bin/pathCC -pg ~/tiempo.cpp -o tiempoEko
$ g++ -pg ~/tiempo.cpp -o tiempoG

tiempo.cpp es el nombre del programa (que está en mi carpeta home) y tiempoEko/tiempoG son los ejecutables. El parámetro -pg sirve para poder comparar el tiempo que tarda en ejecutarse cada versión usando gprof. Como sé que esto no es una verdadera explicación de lo que hacen esas dos letras, aquí están un par de enlaces que pueden ser útiles [1] y [2].

Tras ejecutarlos, se usa gprof (ejecuto una versión y utilizo gprof antes de ejecutar la otra versión. El motivo de esto está relacionado con las dos letritas de antes)

$ ./tiempoG
$ gprof tiempoG

Para tiempoEko, el resultado es (solo copio las líneas que me parecieron interesantes):

 %   cumulative   self              self     total           
 time   seconds   seconds    calls  ns/call  ns/call  name    
 55.73      0.05     0.05 19998000     2.51     2.51  mult()
 44.58      0.09     0.04                             main
  0.00      0.09     0.00        2     0.00     0.00  __static_initialization_
                                                      _and_destruction_0(int, int)
  0.00      0.09     0.00        1     0.00     0.00  global destructors keyed to mult()
  0.00      0.09     0.00        1     0.00     0.00  global constructors keyed to mult()

y para tiempoG

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ns/call  ns/call  name    
 55.82      0.11     0.11                             main
 31.90      0.17     0.06 19998000     3.03     3.03  mult()
 10.63      0.19     0.02                             frame_dummy
  0.00      0.19     0.00        1     0.00     0.00  global constructors
                                                      keyed to mult()
  0.00      0.19     0.00        1     0.00     0.00  __static_initialization_
                                                      _and_destruction_0(int, int)

Si volvemos a ejecutar tiempoG (por ejemplo), al analizarlo otra vez con gprof los valores diferirán. Para obtener unos valores más precisos habría que realizar muchas pruebas y hacer una media de los valores… pero como orientación puede servir.

Por un lado podemos ver que sumando los valores de la columna «cumulative seconds» obtenemos un tiempo total de 0.41 segundos para tiempoEko (compilado con ekopath) y un tiempo total de 0.85 segundos para tiempoG (compilado con g++).
También llama la atención la diferencia entre los tiempos empleados por la función mult(), que difieren en 0.12 segundos.
Viendo estos resultados, parece que si que se obtiene una mejora palpable (el programa es el doble de rápido!!), por lo que un kernel compilado con ekopath parece más que tentador… pero mientras esperamos por ese kernel, podemos ir haciendo boca compilando otros programas

Sigue leyendo

Instalar un slackbuild

    A diferencia de la mayoría de las distribuciones actuales, en Slackware se ha optado por instalar los programas compilándolos desde las fuentes. Para simplificar este proceso, se usan scripts (slackbuilds). Estos se pueden encontrar en diversos sitios, como o en los repositorios de Alien y slackbuilds.
    En este tutorial me voy a centrar en la instalación de un slackbuild bajado desde Slackbuilds.org, aunque el proceso es casi idéntico en el resto de los casos.

      Una vez descargado tanto el slackbuild como el código fuente(en slackbuilds.org se encuentran los enlaces de descarga de los dos) se descomprime el slackbuild y se mueve el código fuente a la carpeta descomprimida:

    user$ tar xvf slack.tar.gz
    slack/
    slack/README
    slack/slack.info
    slack/slack-desc
    slack/slack.SlackBuild
    user$mv slack-source.tar.gz ./slack

      El siguiente paso es ejecutar el slackbuild. Este normalmente comprobará que tengamos todas las librerías necesarias y en caso de que falte alguna nos avisará y abortará la ejecución (esto no siempre es así, aunque si en la mayor parte de los slackbuilds que he usado). El script hay que ejecutarlo como superusuario:

      root# ./slack.SlackBuild


      Slackware package /tmp/slack-0.0-i486-1_SBo.tgz created.

      En caso de que no se produzca ningún error, se nos informará que un paquete ha sido creado en el directorio /tmp. Solo nos queda instalar este paquete con installpkg:
      root# installpkg /tmp/slack-0.0-i486-1_SBo.tgz
      Estos pocos pasos bastan para instalar la mayoría de los programas, pero para simplificar aún más las cosas, existen programas que automatizan el proceso, como sbopkg