OVH Cloud OVH Cloud

new est il lent?

11 réponses
Avatar
dark poulpo
bonjour, jaimerai savoir si new est lent ?
et si delete est lent aussi?

merci

10 réponses

1 2
Avatar
Jean-Marc Bourguet
"dark poulpo" writes:

bonjour, jaimerai savoir si new est lent ?
et si delete est lent aussi?


Par rapport a quoi? Ca doit avoir a peut de choses pres la meme
vitesse que malloc et free.

Les expressions
new T
et
delete p
declanchent aussi des appels aux constructeurs et destructeurs, ce qui
peut prendre du temps.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Julien Lamy
dark poulpo wrote:
bonjour, jaimerai savoir si new est lent ?
et si delete est lent aussi?



Ca dépend :-)
new alloue la mémoire (par exemple avec malloc), et appelle le
constructeur de l'objet. delete appelle le destructeur et libère la mémoire.
Donc si tes constructeurs et ton destructeur font des calculs de folie
pendant des heures, new et delete seront lents. Si le constructeur se
contente d'initialiser un entier et que le desctructeur ne fait rien, je
ne vois pas de raison pour qu'ils soient lents.
--
Julien
(enlever le NOSPAM pour répondre)

Avatar
dark poulpo
c surtout pour faire des new char[xx] et des delete [] ...
mais oui jen aurais enormement, car c'est pour un interpreteur de script.
si effectievment vous em dites que c lent je passerai au plan b

"Julien Lamy" a écrit dans le message
de news:conefc$kgg$
dark poulpo wrote:
bonjour, jaimerai savoir si new est lent ?
et si delete est lent aussi?



Ca dépend :-)
new alloue la mémoire (par exemple avec malloc), et appelle le
constructeur de l'objet. delete appelle le destructeur et libère la
mémoire.

Donc si tes constructeurs et ton destructeur font des calculs de folie
pendant des heures, new et delete seront lents. Si le constructeur se
contente d'initialiser un entier et que le desctructeur ne fait rien, je
ne vois pas de raison pour qu'ils soient lents.
--
Julien
(enlever le NOSPAM pour répondre)



Avatar
Gabriel Dos Reis
"dark poulpo" writes:

| c surtout pour faire des new char[xx] et des delete [] ...

Une raison particuliere pour ne pas utiliser std::vector<char> ?

| mais oui jen aurais enormement, car c'est pour un interpreteur de script.
| si effectievment vous em dites que c lent je passerai au plan b

qui est ?

-- Gaby
Avatar
Fabien LE LEZ
On Thu, 2 Dec 2004 17:14:23 +0100, "dark poulpo" :

c


C'est.
Et ne réponds pas à l'envers -- cf
<http://www.giromini.org/usenet-fr/repondre.html>.

surtout pour faire des new char[xx] et des delete [] ...


Bvarf... Utilise donc std::string et laisse-le faire le travail -- il
y a de bonnes chances pour qu'il s'en sorte bien mieux que si tu
bricoles avec des char[].


--
;-)

Avatar
Arnaud Meurgues
dark poulpo wrote:
c surtout pour faire des new char[xx] et des delete [] ...
mais oui jen aurais enormement, car c'est pour un interpreteur de script.
si effectievment vous em dites que c lent je passerai au plan b


Je ne vois pas trop pourquoi ce serait spécialement plus lent que malloc.

De plus, on peut fort bien imaginer que les performances dépendent de la
plateforme et/ou du compilateur. Le mieux est donc de faire des tests de
performance.

--
Arnaud
(Supprimez les geneurs pour me répondre)

Avatar
dark poulpo
"Fabien LE LEZ" a écrit dans le message de
news:
On Thu, 2 Dec 2004 17:14:23 +0100, "dark poulpo" :

c


C'est.
Et ne réponds pas à l'envers -- cf
<http://www.giromini.org/usenet-fr/repondre.html>.

surtout pour faire des new char[xx] et des delete [] ...


Bvarf... Utilise donc std::string et laisse-le faire le travail -- il
y a de bonnes chances pour qu'il s'en sorte bien mieux que si tu
bricoles avec des char[].

bein non,parceque je faisdesnew char[]mais c pas forcement pour y mettre du

text, mais ca peut servir comme simple data pour des octets


Avatar
Gabriel Dos Reis
"dark poulpo" writes:

| bein non,parceque je faisdesnew char[]mais c pas forcement pour y mettre du
| text, mais ca peut servir comme simple data pour des octets

Alors:

typedef unsigned char byte;
std::vector<byte>

-- Gaby
Avatar
dark poulpo
"dark poulpo" writes:

| c surtout pour faire des new char[xx] et des delete [] ...

Une raison particuliere pour ne pas utiliser std::vector<char> ?


oui, car je dois faire des *((long/float/vecteur/matrice *)data) ( data
sera initilaisé par les new char[])

| mais oui jen aurais enormement, car c'est pour un interpreteur de
script.

| si effectievment vous em dites que c lent je passerai au plan b

qui est ?


de remplacer 90% des utilisations de new pas des char data[16*4]; qui seront
la taille max pour tout les types predefinis.
mais la on secarte.

Avatar
James Kanze
Arnaud Meurgues writes:

|> dark poulpo wrote:
|> > c surtout pour faire des new char[xx] et des delete [] ... mais
|> > oui jen aurais enormement, car c'est pour un interpreteur de
|> > script. si effectievment vous em dites que c lent je passerai au
|> > plan b

|> Je ne vois pas trop pourquoi ce serait spécialement plus lent que
|> malloc.

|> De plus, on peut fort bien imaginer que les performances dépendent
|> de la plateforme et/ou du compilateur. Le mieux est donc de faire
|> des tests de performance.

Dans le temps, on « savait » tous que l'allocation dynamique était
chère. Mais c'était dans le temps -- je sais qu'aujourd'hui, la seule
raison de s'en passer, c'est la fiabilité.

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
1 2