![](https://seccdn.libravatar.org/avatar/861b5545c111d2257fa12e533e723110.jpg?s=120&d=mm&r=g)
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2005-10-17 a las 17:43 -0300, Victor Hugo dos Santos escribió:
mmm.. expliquemos un poco el tema, pues del contrario, van a iniciar una maratona de recompilacion de TODOS los rpm por aca !!! :-D
el gano en recompilar un programa de 586 para athlon/pentium4, es tan minimo q en la maioria de los casos es <= 2%, se tienes suerte superara los 5% (no encuentro el link donde se mostraba algunas comparaciones en este momento, lo sinto) q (personalmente) no vale la pena hacerlo para todos los programas !!!!
En algunas aplicaciones concretas si se gana: por ejemplo, en las multimedia, o aquellas que usan la CPU de manera intensiva - y la mayoría la usan bien poco, están esperando al usuario o al disco. Pero hay que aclarar un concepto. csalinux propone esto:
rpmbuild --rebuild nombre_paquete_src.rpm --target=athlon, i686...
que es lo que yo hacía también antes. Pero hay que fijarse en el manual de rpmbuild: --target PLATFORM When building the package, interpret PLATFORM as arch-vendor-os and set the macros %_target, %_target_cpu, and %_target_os accordingly. Es decir, lo que espera el comando es algo así como "i586-suse-linux", pero no "athlon" a secas. Y lo que significa lo anterior es que va a usar el fichero de macros "/usr/lib/rpm/i586-suse-linux/macros", que contiene esta linea: %optflags -O2 -g -march=i686 -mcpu=i686 Con un 686 lo cogería de /usr/lib/rpm/i686-suse-linux/macros: %optflags -O2 -g -march=i686 -mcpu=i686 /usr/lib/rpm/i486-suse-linux/macros: %optflags -O2 -g -march=i486 /usr/lib/rpm/athlon-linux/macros: %optflags -O2 -g -march=athlon Por defecto toma, creo, más o menos, lo que daría el comando "uname -m -p -o", que en mi caso es "i686 i686 GNU/Linux". Creo es parecido a lo que el "config.sub" (que viene con el configure en los fuentes a compilar) acepta. Hay que aclarar también la diferencia entre las opciones -mcpu y -march que se pasan al compilador gcc. La primera, y que es la que más frecuentemente usamos todos, el manual dice que es: `-mcpu=CPU-TYPE' Tune to CPU-TYPE everything applicable about the generated code, except for the ABI and the set of available instructions. The choices for CPU-TYPE are: Es decir, esta opción no fija el juego de instrucciones usado, que es donde más ganancia se da. Hace un año o dos, SuSE compilaba con -mcpu=i586 o 486, pero con el juego de instrucciones del i386, el común denominador de todas las cpus. La idea es que los programas funcionen en cualquier ordenador "pc compatible". Todos los procesadores usados por nuestros PCs tienen al menos el juego de instrucciones del i386; pero sabiendo que muchos usarían maquinas mejores, se optimiza la cola de instrucciones y alguna otra cosa para el i586. El i586 es el pentium 1. Si nosotros compilamos con -mcpu=i686, estamos optimizando algunas cosas para el pentiumpro. Eso supone bastante poca mejora. Ahora bien, si tenemos un pentium4, y usamos la optimización - -march=pentium4, entonces si que usamos el juego de instrucciones específica del P-IV, y la ganancia es más apreciable. `-march=CPU-TYPE' Generate instructions for the machine type CPU-TYPE. The choices for CPU-TYPE are the same as for `-mcpu'. Moreover, specifying `-march=CPU-TYPE' implies `-mcpu=CPU-TYPE'. Pero eso no lo logramos con un simple --target pasado al rpmbuild. Tenemos que usar una de las combinaciones posibles "arch-vendor-os", y editar el fichero correspondiente para tener la optimización ideal para nuestra máquina. En mi caso yo editaría "/usr/lib/rpm/i686-suse-linux/macros" con esta linea: %optflags -O2 -g -march=pentium4 No se si habría otra manera, puede que si. - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFDVYfZtTMYHG2NR9URAvfgAJ4ubMsZKX1O6QQAp4x2CwhKOSA+SQCfcipQ NEcdvTPWGcA3PkDt2aYo5Cw= =o1zn -----END PGP SIGNATURE-----