Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++
C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 22/11/2012, 04h07   #1
gbdivers
Expert Confirmé Sénior

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 294
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 294
Points : 19 563
Points : 19 563
Par défaut Guru Of the Week n° 43 : copie sur écriture - première partie

L'idiome "copie sur écriture" (aussi connu sous les noms "copy-on-write", "COW" ou "implicite sharing") est une technique de programmation (qui devrait être) bien connue des développeurs utilisant Qt. Cette technique peut éviter les copies inutiles de gros objets (comme QString ou QVector), en réalisant la copie uniquement lors de la première modification d'un objet.

Dans cet article, Herb Sutter détaille quelques implémentations possibles et comparer leurs performances respectives.

Guru Of the Week n° 43 : copie sur écriture - première partie

Connaissiez-vous cet idiome et son utilisation dans Qt ?
Pensez-vous que les implémentations ou l'intérêt de cet idiome soient modifiés par l'arrivée du C++11 ?


Retrouver l'ensemble des Guru of the Week sur la page d'index.
__________________
Merci à toutes les bénévoles avec qui j'ai travaillé sur les rubriques C++, Qt et Jeux.

Retrouvez mes anciennes publications sur GitHub et suivez mes futures publications sur Google+.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/11/2012, 12h04   #2
Freem
Expert Confirmé
 
Homme
Développeur informatique
Inscription : décembre 2008
Messages : 777
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2008
Messages : 777
Points : 2 812
Points : 2 812
Il y a un petit problème de précision, au niveau des comparaisons de performances.

Citation:
chaîne de 1200 carac. chaîne de 12000 carac.
====================== =======================
Croissance Croissance Croissance Croissance
fixe exponentielle fixe exponentielle
(32 bytes) (1.5x) (32 bytes) (1.5x)
---------- ----------- ---------- -----------
Un caractère n'est PAS un octet, c'est un caractère, point. J'allais même dire que byte se traduit par octet, mais vu que j'ai vérifié avant, j'ai appris qu'en fait il s'agit de la plus petite unité adressable. Hors, ce n'est pas le cas de tous les caractères: c'est vrai pour les char, mais wchar_t est aussi un caractère, et est plus grand.

Bon, ok, c'est jouer sur les mots, je l'accorde.
Freem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 12h16   #3
gbdivers
Expert Confirmé Sénior

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 294
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 294
Points : 19 563
Points : 19 563
Dans l'absolue, oui. D'un autre côté, l'article original date de 1998 (14 ans, presque plus vieux que moi ) on pouvait considérer que 1 char = 1 caractère = 1 byte
__________________
Merci à toutes les bénévoles avec qui j'ai travaillé sur les rubriques C++, Qt et Jeux.

Retrouvez mes anciennes publications sur GitHub et suivez mes futures publications sur Google+.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2012, 02h30   #4
koala01
Modérateur
 
Avatar de koala01
 
Philippe Dunski
Inscription : octobre 2004
Messages : 8 752
Détails du profil
Informations personnelles :
Nom : Philippe Dunski
Âge : 41

Informations forums :
Inscription : octobre 2004
Messages : 8 752
Points : 13 723
Points : 13 723
Envoyer un message via MSN à koala01 Envoyer un message via Skype™ à koala01
En fait, les correspondances 1char = 1 caractères = 1 byte et sizeof(char) = 1 sont vraies quoi qu'il arrive...

La correspondance qui n'est pas forcément vraie, c'est 1byte = 8 bits = 1 octet.

On a en effet trop souvent tendance à traduire byte par octet, parce que c'est ce qui se fait de manière classique sur les architectures PC, mais on pourrait parfaitement envisager une architecture dont le byte serait en fait codé sur 16 bits (pour supporter nativement le wchar_t ).

A ce moment là, les correspondances 1 char = 1 caractère = 1 byte et sizeof(char) = 1, seraient toujours aussi vraies, même si, selon les tailles que l'on constate actuellement, nous aurions des correspondances proches de
  • sizeof(short) = 1 (hé oui: 16 bits )
  • sizeof(int) = 2
  • sizeof(long) = 2
  • sizeof(long long) = 4
Finalement, le terme le moins mauvais pour traduire "byte" devrait être "multiplet" pour, effectivement, n'être basé sur aucune présomption quant à la taille de celui-ci

C'est la raison pour laquelle C++ n'impose strictement rien hormis char <=short <= int <= long long et sizeof(char) = 1
__________________
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
je ne répondrai à aucune question technique par E-mail, message visiteur ou message privé
Vous avez obtenu votre réponse pensez au bouton en bas de page
koala01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2012, 09h13   #5
gbdivers
Expert Confirmé Sénior

 
Homme Guillaume Belz
Biochimiste
Inscription : novembre 2008
Messages : 5 294
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Belz
Âge : 37
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Biochimiste
Secteur : Santé

Informations forums :
Inscription : novembre 2008
Messages : 5 294
Points : 19 563
Points : 19 563
Pour "caractère", je pense que Freem parlait aussi du fait que les caractères ne sont plus forcement codés sur un char et donc pas 1 byte.
__________________
Merci à toutes les bénévoles avec qui j'ai travaillé sur les rubriques C++, Qt et Jeux.

Retrouvez mes anciennes publications sur GitHub et suivez mes futures publications sur Google+.

Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5.
gbdivers est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2012, 11h42   #6
koala01
Modérateur
 
Avatar de koala01
 
Philippe Dunski
Inscription : octobre 2004
Messages : 8 752
Détails du profil
Informations personnelles :
Nom : Philippe Dunski
Âge : 41

Informations forums :
Inscription : octobre 2004
Messages : 8 752
Points : 13 723
Points : 13 723
Envoyer un message via MSN à koala01 Envoyer un message via Skype™ à koala01
Citation:
Envoyé par gbdivers Voir le message
Pour "caractère", je pense que Freem parlait aussi du fait que les caractères ne sont plus forcement codés sur un char et donc pas 1 byte.
Justement, ils sont codés sur un byte, toujours...

Mais il ne sont plus forcément codé sur un octet

Là est toute la différence
__________________
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
je ne répondrai à aucune question technique par E-mail, message visiteur ou message privé
Vous avez obtenu votre réponse pensez au bouton en bas de page
koala01 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/12/2012, 08h51   #7
leternel
Expert Confirmé
 
Homme Pierre
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 1 354
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 1 354
Points : 2 860
Points : 2 860
il ne ferait pas la distinction entre le caractère, symbole atomique d'un texte, et le char, taille de variable destinée à contenir un certain ensemble de caractère?

Conviens-en, sizeof(wchar_t) n'est pas forcément 1…
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
  • Une variable de moins est une source d'erreur en moins.
  • Un pointeur de moins est une montagne d'erreurs en moins.
  • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
  • La plus sotte des questions est celle qu'on ne pose pas.
Pour faire des graphes, essayez yEd.
leternel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h43.


 
 
 
 
Partenaires

Hébergement Web