writes:Ils en parlent de l'implémentation à templates. La technique est
bien plus ancienne que les templates (j'en ai entendu parler déjà en
1992, ou quelque part par là), et marche aussi bien avec des
fonctions virtuelles. En fait, j'ai fait un benchmark il y a cinq ou
six ans, avec Sun CC 4.2, et curieusement, c'était la version avec
fonctions virtuelles qui était la plus rapide.
Tu as deux codes équivalents, l'un utilisant des modèles, et l'autre
les mécanismes virtuels. Et le second est le plus rapide.
C'est bien cela ? Cela me paraît étrange.
Te souviens-tu d'où venait la différence de temps ?
kanze@gabi-soft.fr writes:
Ils en parlent de l'implémentation à templates. La technique est
bien plus ancienne que les templates (j'en ai entendu parler déjà en
1992, ou quelque part par là), et marche aussi bien avec des
fonctions virtuelles. En fait, j'ai fait un benchmark il y a cinq ou
six ans, avec Sun CC 4.2, et curieusement, c'était la version avec
fonctions virtuelles qui était la plus rapide.
Tu as deux codes équivalents, l'un utilisant des modèles, et l'autre
les mécanismes virtuels. Et le second est le plus rapide.
C'est bien cela ? Cela me paraît étrange.
Te souviens-tu d'où venait la différence de temps ?
writes:Ils en parlent de l'implémentation à templates. La technique est
bien plus ancienne que les templates (j'en ai entendu parler déjà en
1992, ou quelque part par là), et marche aussi bien avec des
fonctions virtuelles. En fait, j'ai fait un benchmark il y a cinq ou
six ans, avec Sun CC 4.2, et curieusement, c'était la version avec
fonctions virtuelles qui était la plus rapide.
Tu as deux codes équivalents, l'un utilisant des modèles, et l'autre
les mécanismes virtuels. Et le second est le plus rapide.
C'est bien cela ? Cela me paraît étrange.
Te souviens-tu d'où venait la différence de temps ?
Éventuellement, c'était dû à une limitation sur la mémoire utilisée,
mais là aussi, je ne sais pas au juste.
Éventuellement, c'était dû à une limitation sur la mémoire utilisée,
mais là aussi, je ne sais pas au juste.
Éventuellement, c'était dû à une limitation sur la mémoire utilisée,
mais là aussi, je ne sais pas au juste.
writes:Éventuellement, c'était dû à une limitation sur la mémoire utilisée,
mais là aussi, je ne sais pas au juste.
Mouais. Comme tu le dis, le code généré par l'instantiation des
modèles devrait être identique, et l'aspect dynamique ne devrait pas
intervenir. Je vois mal où une différence peut intervenir, et a
fortiori sur la mémoire utilisée.
Veux-tu dire que le compilateur pourrait utiliser une mémoire
différente (différente à quel niveau ?) pour les deux sortes
d'objets ?
kanze@gabi-soft.fr writes:
Éventuellement, c'était dû à une limitation sur la mémoire utilisée,
mais là aussi, je ne sais pas au juste.
Mouais. Comme tu le dis, le code généré par l'instantiation des
modèles devrait être identique, et l'aspect dynamique ne devrait pas
intervenir. Je vois mal où une différence peut intervenir, et a
fortiori sur la mémoire utilisée.
Veux-tu dire que le compilateur pourrait utiliser une mémoire
différente (différente à quel niveau ?) pour les deux sortes
d'objets ?
writes:Éventuellement, c'était dû à une limitation sur la mémoire utilisée,
mais là aussi, je ne sais pas au juste.
Mouais. Comme tu le dis, le code généré par l'instantiation des
modèles devrait être identique, et l'aspect dynamique ne devrait pas
intervenir. Je vois mal où une différence peut intervenir, et a
fortiori sur la mémoire utilisée.
Veux-tu dire que le compilateur pourrait utiliser une mémoire
différente (différente à quel niveau ?) pour les deux sortes
d'objets ?
Loïc Joly wrote in message
news:<cc4ctg$l2f$...drkm wrote:Porte-t-elle un nom ?
À vrai dire, pas que je sache. Mais c'est un problème que je n'ai suivi
que de loin, étant donné qu'il a peu d'application pratique dans les
domaines où je travaille.J'ai jeté un coup d'oeil au tiny_vector de Blitz, mais cela est
plutôt ardu pour découvrir une telle technique. Peut-être as-tu
l'une ou l'autre référence ?
L'excellent "C++ template, the complete guide " de Josuttis et
Vandevoorde en parle.
Ils en parlent de l'implémentation à templates. La technique est bien
plus ancienne que les templates (j'en ai entendu parler déjà en 1992, ou
quelque part par là), et marche aussi bien avec des fonctions
virtuelles.
En fait, j'ai fait un benchmark il y a cinq ou six ans, avec
Sun CC 4.2, et curieusement, c'était la version avec fonctions
virtuelles qui était la plus rapide.
Loïc Joly <loic.actarus.joly@wanadoo.fr> wrote in message
news:<cc4ctg$l2f$1@news-reader2.wanadoo.fr>...
drkm wrote:
Porte-t-elle un nom ?
À vrai dire, pas que je sache. Mais c'est un problème que je n'ai suivi
que de loin, étant donné qu'il a peu d'application pratique dans les
domaines où je travaille.
J'ai jeté un coup d'oeil au tiny_vector de Blitz, mais cela est
plutôt ardu pour découvrir une telle technique. Peut-être as-tu
l'une ou l'autre référence ?
L'excellent "C++ template, the complete guide " de Josuttis et
Vandevoorde en parle.
Ils en parlent de l'implémentation à templates. La technique est bien
plus ancienne que les templates (j'en ai entendu parler déjà en 1992, ou
quelque part par là), et marche aussi bien avec des fonctions
virtuelles.
En fait, j'ai fait un benchmark il y a cinq ou six ans, avec
Sun CC 4.2, et curieusement, c'était la version avec fonctions
virtuelles qui était la plus rapide.
Loïc Joly wrote in message
news:<cc4ctg$l2f$...drkm wrote:Porte-t-elle un nom ?
À vrai dire, pas que je sache. Mais c'est un problème que je n'ai suivi
que de loin, étant donné qu'il a peu d'application pratique dans les
domaines où je travaille.J'ai jeté un coup d'oeil au tiny_vector de Blitz, mais cela est
plutôt ardu pour découvrir une telle technique. Peut-être as-tu
l'une ou l'autre référence ?
L'excellent "C++ template, the complete guide " de Josuttis et
Vandevoorde en parle.
Ils en parlent de l'implémentation à templates. La technique est bien
plus ancienne que les templates (j'en ai entendu parler déjà en 1992, ou
quelque part par là), et marche aussi bien avec des fonctions
virtuelles.
En fait, j'ai fait un benchmark il y a cinq ou six ans, avec
Sun CC 4.2, et curieusement, c'était la version avec fonctions
virtuelles qui était la plus rapide.
drkm wrote in message
news:...writes:
L'expansion des templates utilise de la mémoire. A priori, je
m'attendrais à ce que cette expansion soit finie, et la mémoire libérée,
avant de commencer l'optimisation, mais ce n'est pas moi qui a écrit le
compilateur. Il y a peut être des raisons pour retenir cette mémoire.
N'oublie pas que mes essais ont eu lieu à une autre époque. La machine
en question n'avait que 48 Mo de mémoire réele, et environ 100 Mo de
mémoire virtuelle.
Et arrêter l'optimisation quand un malloc renvoie
NULL me semble un choix raisonnable.
drkm <usenet.fclcxx@fgeorges.org> wrote in message
news:<wkbrit72kz.fsf@fgeorges.org>...
kanze@gabi-soft.fr writes:
L'expansion des templates utilise de la mémoire. A priori, je
m'attendrais à ce que cette expansion soit finie, et la mémoire libérée,
avant de commencer l'optimisation, mais ce n'est pas moi qui a écrit le
compilateur. Il y a peut être des raisons pour retenir cette mémoire.
N'oublie pas que mes essais ont eu lieu à une autre époque. La machine
en question n'avait que 48 Mo de mémoire réele, et environ 100 Mo de
mémoire virtuelle.
Et arrêter l'optimisation quand un malloc renvoie
NULL me semble un choix raisonnable.
drkm wrote in message
news:...writes:
L'expansion des templates utilise de la mémoire. A priori, je
m'attendrais à ce que cette expansion soit finie, et la mémoire libérée,
avant de commencer l'optimisation, mais ce n'est pas moi qui a écrit le
compilateur. Il y a peut être des raisons pour retenir cette mémoire.
N'oublie pas que mes essais ont eu lieu à une autre époque. La machine
en question n'avait que 48 Mo de mémoire réele, et environ 100 Mo de
mémoire virtuelle.
Et arrêter l'optimisation quand un malloc renvoie
NULL me semble un choix raisonnable.
Bonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Bonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Bonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Daveed Vandevoorde wrote in messageBonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
Je schrijft als een Franstalige ;-)
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Merci.
Si je peux entrevoir quelques détails, je n'arrive pas à imaginer
exactement l'ensemble. Quelqu'un a-t-il un exemple simple mais
complet ?
Daveed Vandevoorde wrote in message <52f2f9cd.0407070820.79ddd0d5@posting.google.com>
Bonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
Je schrijft als een Franstalige ;-)
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Merci.
Si je peux entrevoir quelques détails, je n'arrive pas à imaginer
exactement l'ensemble. Quelqu'un a-t-il un exemple simple mais
complet ?
Daveed Vandevoorde wrote in messageBonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
Je schrijft als een Franstalige ;-)
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Merci.
Si je peux entrevoir quelques détails, je n'arrive pas à imaginer
exactement l'ensemble. Quelqu'un a-t-il un exemple simple mais
complet ?
(Daveed Vandevoorde) writes:
| Bonjour a tous,
Salut !
| Je n'ai pas ecrit de francais depuis plus de quinze ans.
| Mes excuses les plus Belges pour les fotes. (Ah, et mon
| clavier n'a pas d'accents faciles. ;-)
Ton clavier s'est trompé et a tapé "fr." devant compl.lang.c++ et
viré ".moderated" à l'insue de ton plein gré ? ;-)
google@vandevoorde.com (Daveed Vandevoorde) writes:
| Bonjour a tous,
Salut !
| Je n'ai pas ecrit de francais depuis plus de quinze ans.
| Mes excuses les plus Belges pour les fotes. (Ah, et mon
| clavier n'a pas d'accents faciles. ;-)
Ton clavier s'est trompé et a tapé "fr." devant compl.lang.c++ et
viré ".moderated" à l'insue de ton plein gré ? ;-)
(Daveed Vandevoorde) writes:
| Bonjour a tous,
Salut !
| Je n'ai pas ecrit de francais depuis plus de quinze ans.
| Mes excuses les plus Belges pour les fotes. (Ah, et mon
| clavier n'a pas d'accents faciles. ;-)
Ton clavier s'est trompé et a tapé "fr." devant compl.lang.c++ et
viré ".moderated" à l'insue de ton plein gré ? ;-)
(drkm) wrote in message news:...Daveed Vandevoorde wrote in messageBonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
Je schrijft als een Franstalige ;-)
Maar ik ben in feite oorspronkelijk Franstalig (dwz.,
m'n moedertaal is Frans niettegenstaande m'n
familienaam).
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Merci.
Si je peux entrevoir quelques détails, je n'arrive pas à imaginer
exactement l'ensemble. Quelqu'un a-t-il un exemple simple mais
complet ?
Je n'en ai pas la tout de suite. L'idee general est que
les operateur cree des objets representant l'operation
et que l'operator= accepte ces objets et les evaluent.
Pour les "expression template" chaque objet a un operator[]
en-ligne plus ou moins comme ceci:
C'est trop simplifie, mais j'espere que ca illustre l'idee generale.
Pour plus de details, voir le chapitre 18 de mon bouquin ;-)
darkman_spam@yahoo.fr (drkm) wrote in message news:<8b283176.0407071735.362bdd8a@posting.google.com>...
Daveed Vandevoorde wrote in message <52f2f9cd.0407070820.79ddd0d5@posting.google.com>
Bonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
Je schrijft als een Franstalige ;-)
Maar ik ben in feite oorspronkelijk Franstalig (dwz.,
m'n moedertaal is Frans niettegenstaande m'n
familienaam).
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Merci.
Si je peux entrevoir quelques détails, je n'arrive pas à imaginer
exactement l'ensemble. Quelqu'un a-t-il un exemple simple mais
complet ?
Je n'en ai pas la tout de suite. L'idee general est que
les operateur cree des objets representant l'operation
et que l'operator= accepte ces objets et les evaluent.
Pour les "expression template" chaque objet a un operator[]
en-ligne plus ou moins comme ceci:
C'est trop simplifie, mais j'espere que ca illustre l'idee generale.
Pour plus de details, voir le chapitre 18 de mon bouquin ;-)
(drkm) wrote in message news:...Daveed Vandevoorde wrote in messageBonjour a tous,
Je n'ai pas ecrit de francais depuis plus de quinze ans.
Mes excuses les plus Belges pour les fotes. (Ah, et mon
clavier n'a pas d'accents faciles. ;-)
Je schrijft als een Franstalige ;-)
Maar ik ben in feite oorspronkelijk Franstalig (dwz.,
m'n moedertaal is Frans niettegenstaande m'n
familienaam).
La technique basee sur les templates s'apelle "expression
templates". La version dynamique (non-template) tombe
dans la grande categorie "lazy evaluation" (evaluation
paresseuse?).
Merci.
Si je peux entrevoir quelques détails, je n'arrive pas à imaginer
exactement l'ensemble. Quelqu'un a-t-il un exemple simple mais
complet ?
Je n'en ai pas la tout de suite. L'idee general est que
les operateur cree des objets representant l'operation
et que l'operator= accepte ces objets et les evaluent.
Pour les "expression template" chaque objet a un operator[]
en-ligne plus ou moins comme ceci:
C'est trop simplifie, mais j'espere que ca illustre l'idee generale.
Pour plus de details, voir le chapitre 18 de mon bouquin ;-)