Gentooistes : donnez vos CFLAGS/CXXFLAGS

e.nounours -> c’est quoi le programme que tu compile pour le test ?

[fixed]emerge info
Portage 2.0.51.19 (default-linux/x86/2004.3, gcc-3.3.5, glibc-2.3.4.20041102-r1, 2.6.11-gentoo-r4 i686)

System uname: 2.6.11-gentoo-r4 i686 AMD Athlon™ Processor
Gentoo Base System version 1.4.16
Python: dev-lang/python-2.3.4-r1 [2.3.4 (#1, Mar 20 2005, 00:23:47)]
dev-lang/python: 2.3.4-r1
sys-devel/autoconf: 2.13, 2.59-r6
sys-devel/automake: 1.5, 1.8.5-r3, 1.6.3, 1.7.9-r1, 1.4_p6, 1.9.4
sys-devel/binutils: 2.15.92.0.2-r1
sys-devel/libtool: 1.5.10-r4
virtual/os-headers: 2.6.8.1-r2
ACCEPT_KEYWORDS=“x86”
AUTOCLEAN=“yes”
CFLAGS="-mcpu=athlon-tbird -O2 -pipe"
CHOST=“i686-pc-linux-gnu”
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-mcpu=athlon-tbird -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES=“autoaddcvs autoconfig ccache distlocks sandbox sfperms”
GENTOO_MIRRORS=“http://mir.zyrianes.net/gentoo/ ftp://194.117.143.70/mirrors/gentoo ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo ftp://194.117.143.69/mirrors/gentoo
LANG=“fr_FR@euro”
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC=“rsync://rsync.gentoo.org/gentoo-portage”
USE=“x86 3dnow X acpi aim alsa apache2 apm arts avi berkdb bitmap-fonts bonobo cdr crypt cups curl dvd dvdr emboss encode esd evo fam flac font-server foomaticdb fortran ftp gdbm gif gnome gphoto2 gpm gtk gtk2 gtkhtml imagemagick imlib innodb ipv6 java joystick jpeg kde lcms libg++ libwww mad mikmod mmx motif mozilla mp3 mpeg msn mysql ncurses nls nptl oggvorbis opengl oscar oss pam pdflib perl php png ppds python qt quicktime readline real samba scanner sdl spell ssl svga tcltk tcpd threads tiff truetype truetype-fonts type1-fonts usb xine xml xml2 xmms xosd xpm xv xvid zlib linguas_fr”
Unset: ASFLAGS, CBUILD, CTARGET, LC_ALL, LDFLAGS
[/fixed]

Un truc bidon très court avec des math en boucle dedans.
tu veux le source ?

[fixed]
moi@tatiana progC $ gcc -lm -O3 -march=pentium-m -funroll-loops intcount.c
moi@tatiana progC $ time ./a.out

real 0m9.859s
user 0m9.838s
sys 0m0.017s
moi@tatiana progC $ gcc -lm -O3 -march=pentium4 -funroll-loops intcount.c
moi@tatiana progC $ time ./a.out

real 0m9.567s
user 0m9.547s
sys 0m0.016s
[/fixed]

Vais peut-être laisser le p4 moi finalement :smiley:

-ftracer => c’est quoi ?

J’vais me faire des tests ce soir. Vous n’auriez pas une idée d’un ptit programme en C pas trop compliqué qui permettrait de bien mettre en évidence les diverses optimisation ? J’pensais à un ptit :

[cpp]int main(){
int i=0;
while(i<10000){
i++;
}
}
[/cpp]

Et éventuellement à la création d’une liste chainée de manière récursive…

Je veut bien oui :slight_smile: ca peut etre interessant pour tester quenques optimisations.

[fixed]
-ftracer
Perform tail duplication to enlarge superblock size. This transformation simplifies the control flow of the function allowing other
optimizations to do better job.
[/fixed]

Moi j’utilise çà :
[fixed]
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <errno.h>

int main (void)
{
long int i, a;
double f;
short j;
long int tabi [4];
double tabf [4];
for (i=0; i < 10000000; i++)
{
a=i+ii-ii+i*(i-i);
f=0.1*((double)(i))+pow ( 0.1,0.2)+cos(i)sin(i)+sin(cos(tan(i)))(cos(i)+sin(i));
for (j=0;j<4;j++)
{
tabi [j] = ii-ii+(i*(i+i));
tabf [j] = sin(i) + cos (i);
}
}
return 0;
}
[/fixed]

[fixed]-ftracer
Perform tail duplication to enlarge superblock size. This transformation simplifies the control flow of the function allowing other optimizations to do better job.[/fixed]
Des infos sur les CFLAGS via ce lien http://gcc.activeventure.org/Optimize-Options.html (par exemple).

édit : grillé de 9s par e.nounours :P.

e.nounours => J’vais regarder ça ce soir. J’essayerais aussi ce que j’ai dit et je me démerderais pour faire une affreuse boucle avec des “goto” (juste pour voir comment ça se comporte et si je trouve comment marchent les goto en C)

JCP => C’est de l’anglais … :stuck_out_tongue:

e.nounours -> :jap:

[fixed]#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <errno.h>
void leCalcul (long int i, long int *tabi, double *tabf);

int main (void)
{
long int i;
long int tabi [4];
double tabf [4];
for (i=0; i < 10000000; i++)
leCalcul (i, tabi, tabf);
return 0;
}

void leCalcul (long int i, long int *tabi, double *tabf)
{
short j;
double f;
long int a;

    a=i+i*i-i*i+i*(i-i);
    f=0.1*((double)(i))+pow ( 0.1,0.2)+cos(i)*sin(i)+sin(cos(tan(i)))*(cos(i)+sin(i));
    for (j=0;j<4;j++)
    {
            tabi [j] = i*i-i*i+(i*(i+i));
            tabf [j] = sin(i) + cos (i);
    }

}
[/fixed]

Je le modifie, çà sera un peu plus compliqué et un peu plus proche du réel.

[fixed]moi@tatiana progC $ gcc -lm -O3 -march=pentium-m -funroll-loops intcount.c
moi@tatiana progC $ time ./a.out

real 0m9.928s
user 0m9.868s
sys 0m0.017s
[/fixed]

C’est bizzare, c’est moi time à cette forme là :
[fixed].-(~/tmp/testGcc)------------------------------------------------(oni@athlonxp)-
`–> time ./a.out
./a.out 8,14s user 0,03s system 90% cpu 9,006 total[/fixed]

Sinon pour mes flags, je suis très basique :[fixed]CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer"
CHOST=“i686-pc-linux-gnu”
CXXFLAGS="${CFLAGS}"[/fixed]

Ça roxxe grave -ffast-math :slight_smile:

[fixed]
maxime@kraft Programmation $ gcc testgcc.c -lm -O3 -march=pentium4 -mtune=pentium4 -mmmx -msse -msse2 -fomit-frame-pointer -fforce-addr -fprefetch-loop-arrays -falign-functions=4 -mfpmath=sse,387 -pipe
maxime@kraft Programmation $ time ./a.out
real 0m10.988s
user 0m10.959s
sys 0m0.001s
maxime@kraft Programmation $ gcc testgcc.c -lm -O3 -march=pentium4 -mtune=pentium4 -mmmx -msse -msse2 -fomit-frame-pointer -ffast-math -fforce-addr -fprefetch-loop-arrays -falign-functions=4 -mfpmath=sse,387 -pipe
maxime@kraft Programmation $ time ./a.out
real 0m2.898s
user 0m2.892s
sys 0m0.001s
maxime@kraft Programmation $
[/fixed]

En plus Mandrake l’utilise pour certains paquets donc ça ne dois pas être si instable que ça, bref je vais tester.

Sinon pour savoir les paramêtres à donner en cflag, vous pouvez essayer ce script disponible sur le forum Gentoo:
http://forums.gentoo.org/viewtopic-t-53602.html

dani284 > ce post date un peu trop (2004), et le script date de 2003, donc :confused:

GentooUser > http://forums.gentoo.org/viewtopic.php?p=1165272#1165272 : donc que du bon apparemment :wink: