. Par exemple, quand on a une fonction qui alloue de la mémoire, fait un traitement, et désalloue la mémoire, appeller la fonction n fois dans une boucle for réalloue et désalloue n fois la mémoire, ce qui me semble assez abérrant.
Fonction potentiellement mal codee. Ou boucle for mal foutue, au choix.
Perso, vite fait, je me dis autant allouer la memoire dans une variable statique de la fonction, et avoir un moyen de faire un appel pour liberer si necessaire.
Ou alors filer un buffer, pour eviter que la fonction n'alloues elle meme.
Mais, oui, ca necessite de savoir qu'un appel systeme c'est lent et de prendre ca en compte quand on code.
Moi ça me file des boutons en C++11 de refiler des pointeurs vers de la mémoire libre en paramètre des fonctions ou de passer des gros objets par références non-constantes, j'ai l'impression que c'est du mélange crado de paradigmes.
Pourquoi? Le cpp est prevu pour interegir avec le systeme, donc pour les effets de bord (meme si, certes, moins y'en a mieux c'est). Ce n'est pas un langage fonctionnel...
Et justement pour moi la force de ce langage c'est qu'il ne m'enferme pas dans une facon de penser: je n'ai pas a toujours faire des classes pour que dalle (java), mais je peux si je veux (c). Je peux faire du fonctionnel (avec const) mais je peux aussi facilement interagir avec le systeme. J'ai meme de la prog generique que je crois puissante.
Le fait de pouvoir passer des buffers, ca permets justement aux gens de reduire le nombre d'allocations et donc de syscalls.
Étrangement, ce genre de code est beaucoup plus performant dans certains langages de haut niveau qui vectorisent les appels de fonction.
Puis-je etre curieux et avoir un exemple? Je ne serais pas surpris qu'ils soient plus simples a gerer, mais plus rapides? Ca m'intrigue.
[^] # Re: essayer Julia ?
Posté par freem . En réponse au journal Un Python qui rivalise avec du C++. Évalué à 2.
Fonction potentiellement mal codee. Ou boucle for mal foutue, au choix.
Perso, vite fait, je me dis autant allouer la memoire dans une variable statique de la fonction, et avoir un moyen de faire un appel pour liberer si necessaire.
Ou alors filer un buffer, pour eviter que la fonction n'alloues elle meme.
Mais, oui, ca necessite de savoir qu'un appel systeme c'est lent et de prendre ca en compte quand on code.
Pourquoi? Le cpp est prevu pour interegir avec le systeme, donc pour les effets de bord (meme si, certes, moins y'en a mieux c'est). Ce n'est pas un langage fonctionnel...
Et justement pour moi la force de ce langage c'est qu'il ne m'enferme pas dans une facon de penser: je n'ai pas a toujours faire des classes pour que dalle (java), mais je peux si je veux (c). Je peux faire du fonctionnel (avec const) mais je peux aussi facilement interagir avec le systeme. J'ai meme de la prog generique que je crois puissante.
Le fait de pouvoir passer des buffers, ca permets justement aux gens de reduire le nombre d'allocations et donc de syscalls.
Puis-je etre curieux et avoir un exemple? Je ne serais pas surpris qu'ils soient plus simples a gerer, mais plus rapides? Ca m'intrigue.