Fabien LE LEZ wrote on 04/03/2006 20:38:
Euh... J'ai pas suivi, là. Ne sommes-nous pas sur un forum
consacré au C++ ?
la question posée initialement "une fonction [non membre] qui
prend un entier en paramètre" n'avait donc rien à faire ici ??
que ne nous l'avez vous signifiez plus tôt, un "circulez"
aurait été tout indiqué.
Et franchement, si un codeur C++ utilise ce genre de hack,
de quoi ? j'ai pas mon grammar pack sous la main.
Pour le C, je ne sais pas, je ne connais pas ce langage.
il n'est jamais trop tard pour commencer à apprendre.
Non. Toute optimisation est commandée par le profiler,
voui, voui, le code sort du generater, l'IHM du designer, et
l'analyse n'existe simplement plus.
une fois qu'on s'aperçoit que le programme réel est
effectivement trop lent.
ah "trop" uniquement, s'il n'est que "assez" lent tout va bien
?
Fabien LE LEZ wrote on 04/03/2006 20:38:
Euh... J'ai pas suivi, là. Ne sommes-nous pas sur un forum
consacré au C++ ?
la question posée initialement "une fonction [non membre] qui
prend un entier en paramètre" n'avait donc rien à faire ici ??
que ne nous l'avez vous signifiez plus tôt, un "circulez"
aurait été tout indiqué.
Et franchement, si un codeur C++ utilise ce genre de hack,
de quoi ? j'ai pas mon grammar pack sous la main.
Pour le C, je ne sais pas, je ne connais pas ce langage.
il n'est jamais trop tard pour commencer à apprendre.
Non. Toute optimisation est commandée par le profiler,
voui, voui, le code sort du generater, l'IHM du designer, et
l'analyse n'existe simplement plus.
une fois qu'on s'aperçoit que le programme réel est
effectivement trop lent.
ah "trop" uniquement, s'il n'est que "assez" lent tout va bien
?
Fabien LE LEZ wrote on 04/03/2006 20:38:
Euh... J'ai pas suivi, là. Ne sommes-nous pas sur un forum
consacré au C++ ?
la question posée initialement "une fonction [non membre] qui
prend un entier en paramètre" n'avait donc rien à faire ici ??
que ne nous l'avez vous signifiez plus tôt, un "circulez"
aurait été tout indiqué.
Et franchement, si un codeur C++ utilise ce genre de hack,
de quoi ? j'ai pas mon grammar pack sous la main.
Pour le C, je ne sais pas, je ne connais pas ce langage.
il n'est jamais trop tard pour commencer à apprendre.
Non. Toute optimisation est commandée par le profiler,
voui, voui, le code sort du generater, l'IHM du designer, et
l'analyse n'existe simplement plus.
une fois qu'on s'aperçoit que le programme réel est
effectivement trop lent.
ah "trop" uniquement, s'il n'est que "assez" lent tout va bien
?
Le problème actuel, c'est que les opérateurs de << et de >>
signifient surtout l'injection et l'extraction ; c'est leur
utilisation pour le décalage qui représent le surcharge
« abusif ». (Reflechissons un peu, quand même. Quelle est la
(Reflechissons un peu, quand même. Quelle est la
signification que le programmeur voir d'abord ? Quelle est
l'utilisation la plus fréquente ?)
Pas moins lisible. Il dit quelque chose de différent. On utilise
un quand on veut décaler les bits, et l'autre quand on veut
multiplier une valeur par deux.
Apparamment, tu ne sais pas lire le C++, parce qu'il s'agit ici
de multiplier par 2, et en C++, l'opérateur de multiplication
est *, et la constante deux s'écrit 2. Toute autre forme
d'écriture est de l'obfuscation, pûre et simple -- une signe
d'incompétence professionnelle.
Et là, je ne peut que dire que c'est un mensonge, ou que tu ne
sais pas mesurer, parce que j'ai fait des mesures avec le
compilateur Sun CC, sur Sparc. C'est un compilateur que je
connais bien.
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps.
Si un compilateur n'effectue pas l'optimisation
aujourd'hui, c'est temps de changer de compilateur.
Et même, l'obfuscation n'est permis que dans le cas où rien
d'autre ne marche.
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
Je questionnerai bien la compétence d'un programmeur qui écrit
un décalage quand il veut multiplier, et vice versa.
Un programme, c'est fait avant tout pour être lu par des hommes.
En fin de compte, on est professionnel, ou on ne l'est pas.
Le problème actuel, c'est que les opérateurs de << et de >>
signifient surtout l'injection et l'extraction ; c'est leur
utilisation pour le décalage qui représent le surcharge
« abusif ». (Reflechissons un peu, quand même. Quelle est la
(Reflechissons un peu, quand même. Quelle est la
signification que le programmeur voir d'abord ? Quelle est
l'utilisation la plus fréquente ?)
Pas moins lisible. Il dit quelque chose de différent. On utilise
un quand on veut décaler les bits, et l'autre quand on veut
multiplier une valeur par deux.
Apparamment, tu ne sais pas lire le C++, parce qu'il s'agit ici
de multiplier par 2, et en C++, l'opérateur de multiplication
est *, et la constante deux s'écrit 2. Toute autre forme
d'écriture est de l'obfuscation, pûre et simple -- une signe
d'incompétence professionnelle.
Et là, je ne peut que dire que c'est un mensonge, ou que tu ne
sais pas mesurer, parce que j'ai fait des mesures avec le
compilateur Sun CC, sur Sparc. C'est un compilateur que je
connais bien.
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps.
Si un compilateur n'effectue pas l'optimisation
aujourd'hui, c'est temps de changer de compilateur.
Et même, l'obfuscation n'est permis que dans le cas où rien
d'autre ne marche.
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
Je questionnerai bien la compétence d'un programmeur qui écrit
un décalage quand il veut multiplier, et vice versa.
Un programme, c'est fait avant tout pour être lu par des hommes.
En fin de compte, on est professionnel, ou on ne l'est pas.
Le problème actuel, c'est que les opérateurs de << et de >>
signifient surtout l'injection et l'extraction ; c'est leur
utilisation pour le décalage qui représent le surcharge
« abusif ». (Reflechissons un peu, quand même. Quelle est la
(Reflechissons un peu, quand même. Quelle est la
signification que le programmeur voir d'abord ? Quelle est
l'utilisation la plus fréquente ?)
Pas moins lisible. Il dit quelque chose de différent. On utilise
un quand on veut décaler les bits, et l'autre quand on veut
multiplier une valeur par deux.
Apparamment, tu ne sais pas lire le C++, parce qu'il s'agit ici
de multiplier par 2, et en C++, l'opérateur de multiplication
est *, et la constante deux s'écrit 2. Toute autre forme
d'écriture est de l'obfuscation, pûre et simple -- une signe
d'incompétence professionnelle.
Et là, je ne peut que dire que c'est un mensonge, ou que tu ne
sais pas mesurer, parce que j'ai fait des mesures avec le
compilateur Sun CC, sur Sparc. C'est un compilateur que je
connais bien.
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps.
Si un compilateur n'effectue pas l'optimisation
aujourd'hui, c'est temps de changer de compilateur.
Et même, l'obfuscation n'est permis que dans le cas où rien
d'autre ne marche.
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
Je questionnerai bien la compétence d'un programmeur qui écrit
un décalage quand il veut multiplier, et vice versa.
Un programme, c'est fait avant tout pour être lu par des hommes.
En fin de compte, on est professionnel, ou on ne l'est pas.
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
perds pas de temps à regarder, seul Borland le fait (ni M$, ni GCC, ni
Sun CC - je n'ai pas testé le compilo Intel).
Je questionnerai bien la compétence d'un programmeur qui écrit
un décalage quand il veut multiplier, et vice versa.
plonge toi dans une librairie mathématique (cryptlib, crypto++,
trueCrypt, etc) et va questionner leurs programmeurs.
Un programme, c'est fait avant tout pour être lu par des hommes.
ah bon ?!?!?? je pensais bêtement que c'était fait *avant tout* pour
être exécuter par un proc ...
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
perds pas de temps à regarder, seul Borland le fait (ni M$, ni GCC, ni
Sun CC - je n'ai pas testé le compilo Intel).
Je questionnerai bien la compétence d'un programmeur qui écrit
un décalage quand il veut multiplier, et vice versa.
plonge toi dans une librairie mathématique (cryptlib, crypto++,
trueCrypt, etc) et va questionner leurs programmeurs.
Un programme, c'est fait avant tout pour être lu par des hommes.
ah bon ?!?!?? je pensais bêtement que c'était fait *avant tout* pour
être exécuter par un proc ...
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
perds pas de temps à regarder, seul Borland le fait (ni M$, ni GCC, ni
Sun CC - je n'ai pas testé le compilo Intel).
Je questionnerai bien la compétence d'un programmeur qui écrit
un décalage quand il veut multiplier, et vice versa.
plonge toi dans une librairie mathématique (cryptlib, crypto++,
trueCrypt, etc) et va questionner leurs programmeurs.
Un programme, c'est fait avant tout pour être lu par des hommes.
ah bon ?!?!?? je pensais bêtement que c'était fait *avant tout* pour
être exécuter par un proc ...
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
perds pas de temps à regarder, seul Borland le fait (ni M$, ni GCC, ni
Sun CC - je n'ai pas testé le compilo Intel).
Soit j'ai pas compris, soit vous faites erreur, pour Microsoft sur
architecture Pentium au moins.
Testé sur Microsoft Visual C++ 2005: si le compilateur ne transforme pas
x*80 en ((x << 4) + (x << 6)), c'est parce que le compilateur a mieux:
0040101D lea esi,[eax+eax*4]
00401020 shl esi,4
plonge toi dans une librairie mathématique (cryptlib, crypto++,
trueCrypt, etc) et va questionner leurs programmeurs.
Je viens de télécharger cryptlib juste pour voir, du coup, et je n'y
vois pas de << qu'on puisse attribuer à une volonté de faire une
multiplication. [...]
Un programme, c'est fait avant tout pour être lu par des hommes.
ah bon ?!?!?? je pensais bêtement que c'était fait *avant tout* pour
être exécuter par un proc ...
Bon, faut arrêter de dire n'importe quoi, là. Il est évident que le code
est destiné à être lu par une machine, mais il est aussi évident qu'il
est fait par et pour des êtres humains et qu'il doit rester au maximum
compréhensible par ceux-ci. Et quand on dit compréhensible, c'est
compréhensible immédiatement si possible.
Pour une machine x*80 ou ((x << 4) + (x << 6)), c'est du pareil au même.
[...]
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
perds pas de temps à regarder, seul Borland le fait (ni M$, ni GCC, ni
Sun CC - je n'ai pas testé le compilo Intel).
Soit j'ai pas compris, soit vous faites erreur, pour Microsoft sur
architecture Pentium au moins.
Testé sur Microsoft Visual C++ 2005: si le compilateur ne transforme pas
x*80 en ((x << 4) + (x << 6)), c'est parce que le compilateur a mieux:
0040101D lea esi,[eax+eax*4]
00401020 shl esi,4
plonge toi dans une librairie mathématique (cryptlib, crypto++,
trueCrypt, etc) et va questionner leurs programmeurs.
Je viens de télécharger cryptlib juste pour voir, du coup, et je n'y
vois pas de << qu'on puisse attribuer à une volonté de faire une
multiplication. [...]
Un programme, c'est fait avant tout pour être lu par des hommes.
ah bon ?!?!?? je pensais bêtement que c'était fait *avant tout* pour
être exécuter par un proc ...
Bon, faut arrêter de dire n'importe quoi, là. Il est évident que le code
est destiné à être lu par une machine, mais il est aussi évident qu'il
est fait par et pour des êtres humains et qu'il doit rester au maximum
compréhensible par ceux-ci. Et quand on dit compréhensible, c'est
compréhensible immédiatement si possible.
Pour une machine x*80 ou ((x << 4) + (x << 6)), c'est du pareil au même.
[...]
et comment code-t-il (x * 80) ? ((x << 4) + (x << 6))
A priori. Je ne l'ai pas regardé.
perds pas de temps à regarder, seul Borland le fait (ni M$, ni GCC, ni
Sun CC - je n'ai pas testé le compilo Intel).
Soit j'ai pas compris, soit vous faites erreur, pour Microsoft sur
architecture Pentium au moins.
Testé sur Microsoft Visual C++ 2005: si le compilateur ne transforme pas
x*80 en ((x << 4) + (x << 6)), c'est parce que le compilateur a mieux:
0040101D lea esi,[eax+eax*4]
00401020 shl esi,4
plonge toi dans une librairie mathématique (cryptlib, crypto++,
trueCrypt, etc) et va questionner leurs programmeurs.
Je viens de télécharger cryptlib juste pour voir, du coup, et je n'y
vois pas de << qu'on puisse attribuer à une volonté de faire une
multiplication. [...]
Un programme, c'est fait avant tout pour être lu par des hommes.
ah bon ?!?!?? je pensais bêtement que c'était fait *avant tout* pour
être exécuter par un proc ...
Bon, faut arrêter de dire n'importe quoi, là. Il est évident que le code
est destiné à être lu par une machine, mais il est aussi évident qu'il
est fait par et pour des êtres humains et qu'il doit rester au maximum
compréhensible par ceux-ci. Et quand on dit compréhensible, c'est
compréhensible immédiatement si possible.
Pour une machine x*80 ou ((x << 4) + (x << 6)), c'est du pareil au même.
[...]
On Sun, 05 Mar 2006 12:11:14 +0100, James Kanze :En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
Ou peut-être, tout simplement, qu'utiliser des décalages n'est *pas*
une optimisation sur un processeur donné.
Au finale, le compilo a un avantage sur le programmeur : il sait quel
est le processeur cible, et connait parfaitement ses caractéristiques.
On Sun, 05 Mar 2006 12:11:14 +0100, James Kanze <kanze.james@neuf.fr>:
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
Ou peut-être, tout simplement, qu'utiliser des décalages n'est *pas*
une optimisation sur un processeur donné.
Au finale, le compilo a un avantage sur le programmeur : il sait quel
est le processeur cible, et connait parfaitement ses caractéristiques.
On Sun, 05 Mar 2006 12:11:14 +0100, James Kanze :En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
Ou peut-être, tout simplement, qu'utiliser des décalages n'est *pas*
une optimisation sur un processeur donné.
Au finale, le compilo a un avantage sur le programmeur : il sait quel
est le processeur cible, et connait parfaitement ses caractéristiques.
Alexandre wrote on 04/03/2006 16:52:
acte 2: "x << 1" serait /moins lisible/ que "2 * x"
ce bavardage (ou avis très personnel) m'amuse un peu, si un codeur C ne
sait pas lire "x << n" je lui conseillerais humblement de commencer à
s'initier au langage qu'il pense utiliser ou de passer à autre chose.
Alexandre wrote on 04/03/2006 16:52:
acte 2: "x << 1" serait /moins lisible/ que "2 * x"
ce bavardage (ou avis très personnel) m'amuse un peu, si un codeur C ne
sait pas lire "x << n" je lui conseillerais humblement de commencer à
s'initier au langage qu'il pense utiliser ou de passer à autre chose.
Alexandre wrote on 04/03/2006 16:52:
acte 2: "x << 1" serait /moins lisible/ que "2 * x"
ce bavardage (ou avis très personnel) m'amuse un peu, si un codeur C ne
sait pas lire "x << n" je lui conseillerais humblement de commencer à
s'initier au langage qu'il pense utiliser ou de passer à autre chose.
On Sun, 05 Mar 2006 12:11:14 +0100, James Kanze
:En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
Ou peut-être, tout simplement, qu'utiliser des décalages
n'est *pas* une optimisation sur un processeur donné.
Au finale, le compilo a un avantage sur le programmeur : il
sait quel est le processeur cible, et connait parfaitement
ses caractéristiques.
C'est un avantage souvent avancé (un autre étant le profiling
en cours d'appli) par les partisans de la compilation JIT.
On Sun, 05 Mar 2006 12:11:14 +0100, James Kanze
<kanze.james@neuf.fr>:
En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
Ou peut-être, tout simplement, qu'utiliser des décalages
n'est *pas* une optimisation sur un processeur donné.
Au finale, le compilo a un avantage sur le programmeur : il
sait quel est le processeur cible, et connait parfaitement
ses caractéristiques.
C'est un avantage souvent avancé (un autre étant le profiling
en cours d'appli) par les partisans de la compilation JIT.
On Sun, 05 Mar 2006 12:11:14 +0100, James Kanze
:En fait, la technologie pour le faire est bien connu, et ça,
depuis longtemps. Si un compilateur n'effectue pas
l'optimisation aujourd'hui, c'est temps de changer de
compilateur.
Ou peut-être, tout simplement, qu'utiliser des décalages
n'est *pas* une optimisation sur un processeur donné.
Au finale, le compilo a un avantage sur le programmeur : il
sait quel est le processeur cible, et connait parfaitement
ses caractéristiques.
C'est un avantage souvent avancé (un autre étant le profiling
en cours d'appli) par les partisans de la compilation JIT.