Ça dépend de l'application et du système. Ça m'est arrivé de le faire
une fois -- pour une accelération de l'application par une facteur de
300. Mais dans l'ensemble, la plupart (sinon tous) les implémentations
de new renvoient à malloc,
Il me semble qu'il y a une logique : new() , élément du langage, a un niveau
Ça dépend de l'application et du système. Ça m'est arrivé de le faire
une fois -- pour une accelération de l'application par une facteur de
300. Mais dans l'ensemble, la plupart (sinon tous) les implémentations
de new renvoient à malloc,
Il me semble qu'il y a une logique : new() , élément du langage, a un niveau
Ça dépend de l'application et du système. Ça m'est arrivé de le faire
une fois -- pour une accelération de l'application par une facteur de
300. Mais dans l'ensemble, la plupart (sinon tous) les implémentations
de new renvoient à malloc,
Il me semble qu'il y a une logique : new() , élément du langage, a un niveau
Frédéric GOURUL wrote:Je me pose pas mal de questions sur l'implémentation de l'opérateur
d'allocation mémoire void* ::operator new(size_t)
L'implémentation de new est dépendante de ton compilateur.
Beaucoup de littérature a été écrite sur de mauvaises performances
pour les blocs de petites tailles. La dernière fois que j'ai rapporté
cette affirmation, Gabriel Dos m'a expliqué que c'était n'importe
quoi. Le sujet ne m'a jamais intéressé au point que je fasse des
mesures.
Par contre, ce qui paraît évident, c'est qu'un opérateur qui prend
n'importe quelle taille sera moins efficace qu'un opérateur qui ne
gère qu'une seule taille. Donc, si toi programmeur tu sais que tu vas
allouer beaucoup d'objets de taille fixe N
(N=sizeof(TaClasseSupeUtilisee)), il peut être intéressant de
particulariser l'opérateur pour cet objet là.
En gros, je voudrais savoir si ca a un sens de créer un système qui
ferait de la pré-allocation de mémoire pour les objets de petite
taille...
De toute façon, faire de la pré-allocation pour des objets de grosse
taille, c'est difficile.
Frédéric GOURUL wrote:
Je me pose pas mal de questions sur l'implémentation de l'opérateur
d'allocation mémoire void* ::operator new(size_t)
L'implémentation de new est dépendante de ton compilateur.
Beaucoup de littérature a été écrite sur de mauvaises performances
pour les blocs de petites tailles. La dernière fois que j'ai rapporté
cette affirmation, Gabriel Dos m'a expliqué que c'était n'importe
quoi. Le sujet ne m'a jamais intéressé au point que je fasse des
mesures.
Par contre, ce qui paraît évident, c'est qu'un opérateur qui prend
n'importe quelle taille sera moins efficace qu'un opérateur qui ne
gère qu'une seule taille. Donc, si toi programmeur tu sais que tu vas
allouer beaucoup d'objets de taille fixe N
(N=sizeof(TaClasseSupeUtilisee)), il peut être intéressant de
particulariser l'opérateur pour cet objet là.
En gros, je voudrais savoir si ca a un sens de créer un système qui
ferait de la pré-allocation de mémoire pour les objets de petite
taille...
De toute façon, faire de la pré-allocation pour des objets de grosse
taille, c'est difficile.
Frédéric GOURUL wrote:Je me pose pas mal de questions sur l'implémentation de l'opérateur
d'allocation mémoire void* ::operator new(size_t)
L'implémentation de new est dépendante de ton compilateur.
Beaucoup de littérature a été écrite sur de mauvaises performances
pour les blocs de petites tailles. La dernière fois que j'ai rapporté
cette affirmation, Gabriel Dos m'a expliqué que c'était n'importe
quoi. Le sujet ne m'a jamais intéressé au point que je fasse des
mesures.
Par contre, ce qui paraît évident, c'est qu'un opérateur qui prend
n'importe quelle taille sera moins efficace qu'un opérateur qui ne
gère qu'une seule taille. Donc, si toi programmeur tu sais que tu vas
allouer beaucoup d'objets de taille fixe N
(N=sizeof(TaClasseSupeUtilisee)), il peut être intéressant de
particulariser l'opérateur pour cet objet là.
En gros, je voudrais savoir si ca a un sens de créer un système qui
ferait de la pré-allocation de mémoire pour les objets de petite
taille...
De toute façon, faire de la pré-allocation pour des objets de grosse
taille, c'est difficile.
Marc Boyer writes:
Mon nom de famille est « Dos Reis », en deux mots sans trait d'union.
(je ne pensais pas devoir le dire un jour ici).
Exactement sur quelle affirmation étais-je censé avoir expliqué que tu
rapportais n'importe quoi ? Il y a beaucoup de mythes autour de
operator new, il y a en aussi qui en sont moins mythes.
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> writes:
Mon nom de famille est « Dos Reis », en deux mots sans trait d'union.
(je ne pensais pas devoir le dire un jour ici).
Exactement sur quelle affirmation étais-je censé avoir expliqué que tu
rapportais n'importe quoi ? Il y a beaucoup de mythes autour de
operator new, il y a en aussi qui en sont moins mythes.
Marc Boyer writes:
Mon nom de famille est « Dos Reis », en deux mots sans trait d'union.
(je ne pensais pas devoir le dire un jour ici).
Exactement sur quelle affirmation étais-je censé avoir expliqué que tu
rapportais n'importe quoi ? Il y a beaucoup de mythes autour de
operator new, il y a en aussi qui en sont moins mythes.
d'abstraction plus élevé que std::malloc ».
Merci de votre long message qui me donne du grain à moudre.
d'abstraction plus élevé que std::malloc ».
Merci de votre long message qui me donne du grain à moudre.
d'abstraction plus élevé que std::malloc ».
Merci de votre long message qui me donne du grain à moudre.