Déjà, ton troisième thread, il a quelle tête ? S'il s'agit d'un thread, je suppose qu'il existe aussi longtemps que la valeur que tu veux pouvoir modifier existe. On crée combien de threads comme ça ? Un par valeur ? Un pour dix valeurs ?
Ensuite, comment fais-tu pour traiter les nouveaux deltas ? Il faut bien trouver un moyen de les communiquer au thread, non ? Donc il faut (roulements de tambour...) une structure de donnée partagée ! ... Et du coup on en revient à la case départ.
Déléguer les modifications d'une variable à un thread, ça peut parfaitement faire sens¹, mais pas dans cet exemple.
[1] C'est pour ça qu'on utilise des buffers d'écriture par exemple : il vaut mieux déléguer les écritures sur disque à un nombre restreint de threads, qui pourront bénéficier de la bande passante maximale, plutôt que d'avoir 300 threads qui essaient tous d'écrire sur le disque en même temps, et qui au final font que le travail global est ralenti.
L'intérêt des mémoires transactionnelles est qu'elles rendent le code bien plus simple à écrire (et à comprendre !). Le problème (selon moi) des MT est que la plupart sont faites au niveau logiciel, ce qui les rend généralement bien plus lentes que l'utilisation de verrous (ou d'instructions atomiques). C'est en fait ma principale raison de ne pas aimer les systèmes à base de STM (software transactional memory). Par contre il existe toute une littérature concernant les MT faites au niveau matériel, avec des modifications plus ou moins grosses à effectuer sur les processeurs actuels, et ça je crois vraiment que ça peut aider beaucoup, beaucoup de monde.
Il existe une étude (je n'arrive plus à trouver le lien) qui montre que des étudiants confrontés aux verrous et mémoires transactionnelles pour la première fois ont différents niveaux de productivité une fois formés à leur utilisation. Si je me souviens bien, l'ordre de productivité (time-to-solution) était ceci:
Verrouillage à gros grain (mettre un gros verrou sur une liste, un tableau dynamique, etc.)
Mémoires transactionnelles
Verrouillage à grain fin (plein de deadlocks possibles, dur à debugger pour un débutant et même des programmeurs relativement expérimentés ! — etc.)
J'aurais sans doute dû insister sur le fait que, de ce que j'en sais, ce monsieur est célibataire endurci (as in : il a des cales aux mains...). Bref, la « connerie » de l'une (préférer fonder une famille plutôt que finir ses études quand on a déjà une licence) n'est pas spécialement plus importante que celle de l'autre (docteur en physique, certes, mais avec un tempérament tellement exécrable qu'il est toujours célibataire, et pas par choix).
Tu te rends bien sûr compte qu'il existe tout un tas d'artistes « non libres » qui diffusent leurs œuvres de façon plus ou moins confidentielle, et qui (mis à part le contenu non-libre de leur production) correspondent parfaitement à la description que tu viens de faire ? Pour la majorité des gens qui écoutent/suivent la radio et la télé, ces œuvres « n'existent » pas non plus.
Autre exemple très con : je suis fan de musique metal et j'écoute aussi pas mal de classique. En France, même si bien sûr il existe un marché pour les deux (il suffit d'aller chez un disquaire, ou un multi-spécialiste pour s'en convaincre), aucun de ces deux genres n'est réellement mis en avant dans les médias grand public¹. Du coup, dans les deux cas, je m'appuie sur mon réseau de connaissances pour me dire ce qui est bien Quelques exemples très cons : Y. Menuhin et H. Hahn, deux très grands violonistes, ont une façon très différente d'interpréter le même concerto de Bach; Dream Theater a fait une reprise de Gangland (de Iron Maiden) qui n'a presque plus rien à voir avec l'original (on passe d'un morceau somme toute classique de heavy metal des années 80 à un pur morceau de jazz); etc. Ce genre de choses ne se trouve pas forcément dans les circuits traditionnels de distribution (je suis presque certain qu'il faut faire partie du fan club de Dream Theater pour espérer récupérer le live des concerts où ils ont fait cette reprise — enfin pourquoi pas hein).
Tout ça pour dire que ta remarque, en plus de te faire passer pour un élitiste pédant du genre « moi j'écoute un truc que personne d'autre écoute, contrairement à la plèbe », occulte totalement d'autres pans de la création, certes pas libre, mais tout aussi confidentielle. Je sais, je sais, comme le disait Desproges : « c'est affreux le peuple. Je sais, j'en ai parmi mes gens. »
Je suppose que ce n'est pas ce que tu penses (rapport au côté « supérieur », etc.), mais je commence à en avoir marre de la généralisation à la limite de la condescendance (et bien souvent bien au-delà de la limite) concernant « ce con de peuple ».
Je vais donner un exemple très très stupide de pourquoi je déteste ça : je bosse dans une université américaine. Un des profs qui y bosse aussi est connu pour être très bon dans son domaine, mais aussi très incisif, et verbalement agressif. La secrétaire qui travaille dans mon service a une petite trentaine et deux enfants. Le prof en question discute avec elle, et en gros lui dit « Quand même c'est un peu con d'avoir fait des gosses avant d'avoir fini ton master, du coup t'as raté tes études. » Elle de répondre : « Au moins j'ai une vie sexuelle » (et, soit dit en passant, elle n'a pas l'air malheureuse dans sa vie en général). Tout ça pour dire, le « bon sens » des uns n'est pas forcément le même que celui des autres.
Donc ce que tu appelles « le niveau 0 de la réflexion », moi j'appelle ça tout bêtement une simplification. Mais c'est ce qui est génial avec la publication sur internet : on peut poster un commentaire pour faire des précisions.
[1] Si on considère Radio Classique comme média grand public, alors mon argument est un peu plus faible en ce qui concerne le classique, mais tient toujours la route pour le métal².
[2] Bien entendu, si on considère les magazines papier tels « Hard-Rock Magazine », on peut aussi arguer que mon argument devient fragile. Cependant, dans ce cas j'estime qu'on touche un public déjà restreint qui veut s'informer sur quelque chose de relativement confidentiel et nécessitant la lecture de magazines spécialisés³.
[3] Non rien, c'est juste que j'aime bien les notes de bas de page imbriquées. :)
Donc reproduire une œuvre originale (disons une peinture) sans l'accord de l'auteur, et la vendre à quiconque veut bien l'acheter¹, c'est OK, parce que de toute manière ce n'est pas l'originale ?
[1] Je fais une très grosse distinction entre vouloir se faire du fric sur le dos des gens qui ont fait le plus gros du boulot, et simplement reproduire et distribuer leur boulot pour rien sans aucun avantage pécuniaire (même indirect).
Soyons bien clairs: j'aime les smart phones pour le principe (j'en ai pas, pour d'autres raisons), le côté « connecté en permanence », etc.
Mais le coup du « non mais en fait l'iPhone c'est bien à cause des cartes de fidélité, c'est ça la modernité coco », je trouve ça quand même ridicule. C'est pratique, je ne le nie pas (et j'habite les USA, je sais de quoi tu parles), mais c'est quand même de l'ordre du gadget.
Soit dit en passant, c'est pour ça que je disais que je suis plus pour maintenir en pratique un certain ratio entre plus bas salaire de la boite Vs plus haut salaire, que de mettre un plafond "arbitraire" au pour tout le monde. Et comme je le disais, je sais bien qu'il y aura toujours un moyen d'abuser. Concernant les actionnaires d'une boite, j'estime que la rémunération qu'ils touchent en fin d'année grâce aux bénéfices de la boite devrait, elle aussi, entrer en ligne de compte (dans le ratio). Comment ? Je n'en ai pas la moindre idée...
D'un point de vue idéologie, je rejoins souvent les idées annoncées par le Front de Gauche. Mon problème se situe au niveau de son patron... :) Mélanchon a la sale habitude de couper tout le monde tout le temps, ce qui me hérisse au plus haut point. A contrario Besancenot dont je ne partage pas les idées en général (du moins celles que j'ai pu entendre de sa part) a tendance à accepter le fait qu'on laisse parler les gens, puis quand c'est notre tour, on parle aussi (et surtout, très important, on dit aux autres de fermer leur gueule parce qu'on a eu la politesse de faire de même précédemment — ce que Besancenot a eu à faire à plusieurs reprises).
On pourrait croire que c'est petit, mais on élit un président non seulement pour ses idées, mais aussi pour qui il est. Il est grande gueule (ça, ça me dérange pas du tout), il monte vite sur ses grands chevaux (ça me gène un peu plus, mais ça passe), et il coupe les gens au point que ça me donne envie de gerber. Et ce d'autant plus que je suis d'accord avec lui sur le fond ! Je me souviens d'un débat avec une femme ultra-libérale, qui a finit par refuser de parler parce que Mélanchon n'a pas arrêté, de bout en bout, de la couper, hausser le ton, etc. C'est, selon moi, avoir une piètre idée de ce que doit être un débat dans une démocratie.
Pour en revenir au sujet initial, idéalement je suis pour le couplage salaire max (en fonction du salaire médian) + ratio max. Cependant, et même si je peux déjà voir quels abus ça peut induire, en pratique je préfèrerais avoir le ratio max seul. Parce que j'estime que ce n'est pas à l'État de décider ce qui est « suffisant » pour tout un chacun. Je me contente très bien de mon salaire actuel, mais en même temps je conçois que certains considèrent leur salaire comme pas suffisant (même si personnellement j'estime qu'ils n'ont sans doute pas besoin d'avoir autant d'argent dans leur situation, ce n'est que mon opinion).
Je connais des gens qui bossent dans une boite qui a décidé que le salaire X est suffisant comme salaire max¹, et qu'il n'y a pas de raison de payer plus. Quand on explique aux patrons que « ben oui mais je ne vis pas comme toi à 10 minutes du boulot », apparemment ils se réfugient derrière un « ah mais je veux pas t'imposer où tu habites, c'est ton choix ». Sauf que « ailleurs », ça peut parfaitement être quelque chose comme « à 20 minutes du boulot », sauf que l'immobilier est plus cher à cet endroit-là ...
[1] Note bien que le salaire en question tourne autour de 2800€/mois nets, ce qui n'est pas non plus un petit salaire, mais n'est pas bien grand non plus. Il faut bien avouer que ça fait quand même cher de payer l'idéologie de ses patrons alors qu'on sait qu'on pourrait être payé mieux pour un certain ensemble de compétences. Par exemple si je vois d'avoir un enfant et que je décide d'arrêter de bosser pendant 3 ans le temps qu'il puisse aller à la maternelle, et que ma copine bosse dans cette boite, ben exit cette option.
À ce moment-là, je trouverais plus juste d'imposer un ratio maximal sur le plus bas salaire de l'entreprise (a priori le SMIC) Vs le plus haut salaire (probablement le PDG, mais pas toujours). Comme ça, si le grand chef veut voir son salaire augmenter, il est obligé d'augmenter mécaniquement le plus bas salaire.
Évidemment, ça signifie aussi que les petites boites qui ont cinq salariés peuvent se payer des sommes folles — à condition d'avoir le bénéfice qui va avec.
Honnêtement, à moins d'avoir des tonnes d'objets à la durée de vie extrêmement courte qui partagent le même pointeur (ce qui peut arriver hein), la plupart du temps les opérations atomiques sont noyées dans la masse des autres opérations qui de toute manière doivent accéder à la RAM. De plus, si tu n'utilises pas d'opération atomique, je suppose que tu n'utilises pas de verrous non plus (vu que leur garantie d'atomicité se base sur… les opérations atomiques!).
Enfin, j'ai envie de dire que si tu veux avoir du comptage de référence personnalisé, le plus simple est de passer par un autre type de pointeur intelligent : intrusive_ptr (qui embarque un compteur de réf et tu dois fournir l'implémentation de certaines méthodes pour décrire comment en profiter).
Enfin, d'expérience, savoir quand un pointeur partagé ne va jamais être utilisé par un thread est difficile à évaluer. Autant n'avoir que des pointeurs partagés thread-safe, ou aucun, ça simplifie grandement les choses.
shared_ptr objects offer the same level of thread safety as built-in types. A shared_ptr instance can be "read" (accessed using only const operations) simultaneously by multiple threads. Different shared_ptr instances can be "written to" (accessed using mutable operations such as operator= or reset) simultaneosly by multiple threads (even when these instances are copies, and share the same reference count underneath.)
Donc si tu as deux threads, l'un qui lit le pointeur et l'autre qui l'écrit, le résultat est indéfini (race condition). À toi de fournir les verrous nécessaires pour que cela n'arrive pas.
La norme n'impose pas d'être lock-free.
Cependant, toujours d'après la même page,
Starting with Boost release 1.33.0, shared_ptr uses a lock-free implementation on the following platforms:
GNU GCC on x86 or x86-64;
GNU GCC on IA64;
Metrowerks CodeWarrior on PowerPC;
GNU GCC on PowerPC;
Windows.
If your program is single-threaded and does not link to any libraries that might have used shared_ptr in its default configuration, you can #define the macro BOOST_SP_DISABLE_THREADS on a project-wide basis to switch to ordinary non-atomic reference count updates.
Donc il existe un moyen d'être partagé sans passer par des instructions atomiques.
Euh non. Ce ne sont pas des synonymes du tout, c'est bien le problème. Si ça avait été le cas, j'aurais pas fait le caca nerveux que tu as vu plus haut. :)
Pour te donner un ordre d'idée, on a les différents modèles mémoire suivants:
Sequential Consistency
Weak Consistency
Release Consistency
Cache Consistency (aka « Coherence » — toujours en Anglais hein)
Causal Consistency
Entry Consistency
Consistency (ma façon de dire etc.)
Je ne vais pas commencer à faire un cours magistral sur les modèles mémoire, mais en gros si tu dis que tu veux utiliser « Coherence » comme modèle de « memory consistency » sur un système à mémoire partagée et distribuée, les gens vont te faire de gros yeux, t'insulter copieusement, et te demander comment tu espères faire ça de sorte que ça passe à l'échelle, etc.
Bon et je me répète encore une fois à chaque fois que je vois un commentaire sur « consistent » / « coherent » → « cohérent » : bordel de merde, est-ce que quelqu'un pourrait me trouver la traduction avec les bonnes nuances de « consistent » et « coherent » en VF ? Je m'explique : il existe ce qu'on appelle des « memory consistency models ». Parmi ceux-ci, il existe un modèle qui s'appelle « (cache) coherency », qui a un sens bien particulier. Du coup je me retrouve comme un con à garder les noms anglais parce que je n'ai jamais vu quiconque donner une version française correcte.
Un mutex utilise au moins une instruction atomique justement pour garantir l'atomicité de la prise du mutex. Bref, un mutex va forcément coûter au moins aussi cher qu'une opération atomique, vu qu'elles sont à la base du verrouillage ... :-)
Aussi, 0.2 µs / 0.05 µs = 4. Pour les applications qui ne font pas usage trop fréquent de variables partagées/sections critiques ce n'est sans doute pas bien méchant, mais si une structure de donnée est très utilisée/mise à jour par beaucoup d'acteurs (disons, si je suis dans un système multicœur/HTT avec 32 ou 64 threads), on peut vite se retrouver avec de gros soucis de contention. Et dans ce cas, le facteur 4 n'est plus négligeable.
Enfin, étant donné que les structures de données non-blocantes sont extrêmement susceptibles aux bugs subtils, je me dis qu'il vaut sans doute mieux rester avec des structures à grain fin la plupart du temps ...
Même pour shared_ptr, à moins de refiler ton pointeur comme une STD à tous les objets qui passent, tu ne paies le coût de l'opération atomique qu'occasionnellement.
Ben ici (USA) j'ai le choix : soit je tape mon prénom sans accent ( « Stephane » ) dans les formulaires, et je me retrouve avec quelque chose qui ressemble à mon nom; soit je le tape avec accent ( « Stéphane » ) et le colis, je le reçois au nom de « Stphane ».
Cela dit, il n'a pas précisé l'usage mais à quoi bon prendre une telle config si c'est pour lire un pdf et 3 tabs firefox? Pourquoi pas, hein, mais ça ne peut servir de référence.
Pour te citer : « Et puis faut lire aussi :) »
Je compile avec, j'écoute de la musique de temps en temps (mais honnêtement, le décodage de MP3 me fait perdre peut-être 15% d'autonomie par rapport à d'habitude, mais pas plus).
Je t'ai donné trois cas d'utilisation. Mon format : Nom / Processeur@Fréquence / Quantité RAM / Carte graphique / Autonomie = {nominale, en pratique pour Navigateur+terminaux+compilation+LaTeX+PDF, en lisant un DivX}
iBook⁰ / PowerPC@800MHz / 640 Mio / Radeon Mobility / { 6h, ~5h, 2h30 } (~2h si je lisais un DVD)
Quant à mes utilisations du dernier PC, elles sont très simples : quand je suis sur batterie, 90% du temps je ne fais qu'aller sur le web et coder, avec un peu de SSH en prime. Ça veut tout de même dire que j'ai des vidéos YouTube/flash qui tournent régulièrement, des applis web remplies de JavaScript qui font tourner le processeur, etc.
Je regarde aussi des vidéos de temps à autre (mais je n'utilise jamais ou presque le lecteur DVD).
Quand le portable est branché sur une prise, ben je fais ... plus ou moins tout ça (avec p'tet Eclipse en plus par rapport à ViM de temps à autres), je mate des DivX, et euh, ben... Mmmhh. Laisse-moi réfléchir. Ah oui, de temps en temps je reboote sous Windows pour jouer à un jeu vidéo. Et puis c'est tout. Ou bien j'utilise Dia aussi, tiens. Ou Inkscape. Dans tous les cas, mis à part
Toi tu fais quoi avec ta machine qui fait que ton utilisation est tellement supérieure ? Du montage vidéo ? J'en fais jamais, et je n'en ai jamais eu l'utilité (pas de caméra, rien). Du montage photo ? Je prends des photos avec mon APN, je les stocke, ça prend en moyenne 2 minutes. Rien qui pompe réellement sur le PC. Du coup, vraiment je me demande ce que tu peux bien faire sur ton portable qui soit si monstrueusement énergievore partout sauf sur un MacBook Pro.
[0] À noter qu'à l'époque, l'iBook avait sans doute le meilleur rapport qualité-prix pour ce qui était du poids Vs autonomie Vs prix dans l'entrée de gamme (~ 1000€ avec 256 Mio, donc ~1150€ pour 2,2kg là où beaucoup faisaient dans les 3kg pour le même prix et avec une autonomie divisée par deux).
[1] Je précise car le cache est un gros siphon en ce qui concerne la consommation électrique. OK en pratique le Core i7 en lui-même est un siphon, mais bon ... :) C'est pas pour l'autonomie que j'ai acheté ce PC.
Même un MBP avec OSX atteind difficilement les 6h en** usage** hein, parce qu'avoir un 2 terminaux et un Firefox en idle, on va dire que ça sert pas vraiment à grand chose, n'est-ce pas...
Malgré ton ton agressif, je te suivais jusqu'à cette phrase car cela me semblait sensé. Maintenant, ce que tu considères être un vrai usage n'a rien d'universel. Mon portable actuel fait dans les ~3h d'autonomie, et sans doute bien moins (disons la moitié) si je lis un DVD ou même un DivX. Mais dans 90% des cas, je m'en sers pour deux choses : aller sur le net via FF/Chrome/Blah (sans flash la plupart du temps), ou bien utiliser un terminal et coder (avec en plus le visionnage de PDF). De temps en temps, je compile aussi. Résultat : les 3h15 nominales sont bien atteintes dans mon cas. Idem sur mon EeePC avec ~8-10h d'autonomie (et là encore, je faisais du web et du code dessus).
Et c'était aussi pareil sur mon ibook (PowerPC 800MHz) il y a quelques années : il tenait bien ses 5-6h nominales (en « début » de vie de batterie bien entendu¹) simplement parce que j'en faisais un usage relativement spartiate : Safari, terminal, vim, gcc, latex. De temps en temps VLC.
[1] Vers la fin (après environ 3 ans), s'il tenait 2h j'étais bien content. Mais 80€ et une commande eBay chez un Chinois (un vrai, de Hong-Kong) plus tard, j'avais de nouveau une batterie correcte.
J'ai aussi eu le problème à plusieurs reprises sur Mac OS X (10.3). J'aime globalement bien Mac OS X, mais bon, oui, des kernel panic, des clefs USB qui font bloquer l'OS, j'en ai eu aussi. Globalement, je dirais que Mac OS X a planté aussi souvent que Linux avec moi. Sans doute même un petit peu plus (mais pour être honnête, je n'ai jamais mis à jour l'ibook avec OS X 10.3 pour mettre un Tiger ou autre...).
Alors, niveau articles électroniques, il y a les incontournables de Wikipedia: Segmentation_(informatique) et Pagination_(informatique). Si tu comprends l'Anglais, il ne faut pas oublier d'aller voir la version anglaise de ces pages (souvent plus complètes).
Niveau bouquins papier, je connais quelques références :
Andrew S. Tanenbaum : Modern Operating Systems (3rd Edition), qui existe en Français : Systèmes d'exploitation 3ème Ed.
Andrew S. Tanenbaum : Structured Computer Organization (5th Edition), ou en Français : Architecture de l'ordinateur.
Jean-Loup Baer : Microprocessor Architecture: From Simple Pipelines to Chip Multiprocessors (pas de traduction à ma connaissance)
John Hennessy, David Patterson : Computer Organization and Design, Fourth Edition: The Hardware/Software Interface (je ne lui connais pas de traduction)
John Hennessy, David Patterson : Computer Architecture, Fifth Edition: A Quantitative Approach, qui a une traduction en Français : Architecture des ordinateurs : une approche quantitative.
Le bouquin sur les SE de Tanenbaum est très bien fait, décrit les différents problèmes qui se posent pour tout SE récent, et montre comment différents SE tentent de résoudre ces mêmes problèmes de différentes façon (Linux, Windows 2000). Il explique aussi quels mécanismes matériels sont indispensables à un SE moderne pour assurer certaines fonctionnalités (TLB pour l'interaction entre mémoire virtuelle, mémoire physique, caches; Test & Set ou Compare & Swap pour l'implémentation de verrous et de sections critiques en règle générale; etc.).
Le bouquin de Tanenbaum sur l'archi des ordinateurs est supposé être très bon, mais je ne l'ai jamais lu.
Le bouquin de Baer est une excellente introduction à l'architecture moderne des ordinateurs, avec un chapitre final qui explique comment sont architecturés des microprocesseurs avec plusieurs cœurs. Il décrit aussi comment fonctionne un microprocesseur avec instructions exécutées dans le désordre (« out-of-order engine »), comment les mémoires cache sont accédées, etc.
Les deux bouquins de Hennessy & Patterson sont pour moi deux « bibles ». La première référence se situe « juste en dessous » du bouquin de Tanenbaum sur les OS. Le deuxième aborde des mécanismes relativement avancés utilisés dans les µ-proc actuels. Les exercices se chargent de faire « construire » un µ-proc RISC simplifié au lecteur.
La réponse d'un auteur sera toujours la même : « Mon éditeur veut pas. Mon seul boulot, c'est auteur. J'ai un crédit de 20 ans sur ma maison. Je fais comment ? »
Je sais, tous les artistes pourraient dire pareil. Mais la vérité, c'est que faire quelque chose au nom de l'éthique, c'est bien, mais montrer que ça te permet de gagner (au sens d'économiser) des sous, c'est mieux. Et ça n'a rien à voir avec le capitalisme, le libéralisme, ou que sais-je. C'est très simple : penser aux autres, et essayer de faire plaisir à l'Humanité n'est généralement possible que si tu ne te pose pas constamment la question de quand tu vas manger la prochaine fois, ou si tu vas pouvoir payer ton loyer ce mois-ci.
Pour faire une analogie foireuse : être écolo c'est bien, et inciter les gens à recycler c'est bien aussi. Augmenter sensiblement le prix des bouteilles en plastique (avec un système de consigne en gros), et dire aux gens « on vous rend 0,5€ pour chaque bouteille (recyclable) que vous rendez » ça parle au porte-feuille des gens de bien meilleure façon au final.
[^] # Re: Recouvrement
Posté par lasher . En réponse à la dépêche IBM lance la mémoire transactionnelle dans le matériel. Évalué à 2.
Déjà, ton troisième thread, il a quelle tête ? S'il s'agit d'un thread, je suppose qu'il existe aussi longtemps que la valeur que tu veux pouvoir modifier existe. On crée combien de threads comme ça ? Un par valeur ? Un pour dix valeurs ?
Ensuite, comment fais-tu pour traiter les nouveaux deltas ? Il faut bien trouver un moyen de les communiquer au thread, non ? Donc il faut (roulements de tambour...) une structure de donnée partagée ! ... Et du coup on en revient à la case départ.
Déléguer les modifications d'une variable à un thread, ça peut parfaitement faire sens¹, mais pas dans cet exemple.
[1] C'est pour ça qu'on utilise des buffers d'écriture par exemple : il vaut mieux déléguer les écritures sur disque à un nombre restreint de threads, qui pourront bénéficier de la bande passante maximale, plutôt que d'avoir 300 threads qui essaient tous d'écrire sur le disque en même temps, et qui au final font que le travail global est ralenti.
[^] # Re: Instructions atomiques
Posté par lasher . En réponse à la dépêche IBM lance la mémoire transactionnelle dans le matériel. Évalué à 4.
L'intérêt des mémoires transactionnelles est qu'elles rendent le code bien plus simple à écrire (et à comprendre !). Le problème (selon moi) des MT est que la plupart sont faites au niveau logiciel, ce qui les rend généralement bien plus lentes que l'utilisation de verrous (ou d'instructions atomiques). C'est en fait ma principale raison de ne pas aimer les systèmes à base de STM (software transactional memory). Par contre il existe toute une littérature concernant les MT faites au niveau matériel, avec des modifications plus ou moins grosses à effectuer sur les processeurs actuels, et ça je crois vraiment que ça peut aider beaucoup, beaucoup de monde.
Il existe une étude (je n'arrive plus à trouver le lien) qui montre que des étudiants confrontés aux verrous et mémoires transactionnelles pour la première fois ont différents niveaux de productivité une fois formés à leur utilisation. Si je me souviens bien, l'ordre de productivité (time-to-solution) était ceci:
[^] # Re: multi-spécialiste
Posté par lasher . En réponse au journal Répression et peines de prison. Évalué à 2.
J'aurais sans doute dû insister sur le fait que, de ce que j'en sais, ce monsieur est célibataire endurci (as in : il a des cales aux mains...). Bref, la « connerie » de l'une (préférer fonder une famille plutôt que finir ses études quand on a déjà une licence) n'est pas spécialement plus importante que celle de l'autre (docteur en physique, certes, mais avec un tempérament tellement exécrable qu'il est toujours célibataire, et pas par choix).
[^] # Re: Numerama..
Posté par lasher . En réponse au journal Répression et peines de prison. Évalué à 6.
Tu te rends bien sûr compte qu'il existe tout un tas d'artistes « non libres » qui diffusent leurs œuvres de façon plus ou moins confidentielle, et qui (mis à part le contenu non-libre de leur production) correspondent parfaitement à la description que tu viens de faire ? Pour la majorité des gens qui écoutent/suivent la radio et la télé, ces œuvres « n'existent » pas non plus.
Autre exemple très con : je suis fan de musique metal et j'écoute aussi pas mal de classique. En France, même si bien sûr il existe un marché pour les deux (il suffit d'aller chez un disquaire, ou un multi-spécialiste pour s'en convaincre), aucun de ces deux genres n'est réellement mis en avant dans les médias grand public¹. Du coup, dans les deux cas, je m'appuie sur mon réseau de connaissances pour me dire ce qui est bien Quelques exemples très cons : Y. Menuhin et H. Hahn, deux très grands violonistes, ont une façon très différente d'interpréter le même concerto de Bach; Dream Theater a fait une reprise de Gangland (de Iron Maiden) qui n'a presque plus rien à voir avec l'original (on passe d'un morceau somme toute classique de heavy metal des années 80 à un pur morceau de jazz); etc. Ce genre de choses ne se trouve pas forcément dans les circuits traditionnels de distribution (je suis presque certain qu'il faut faire partie du fan club de Dream Theater pour espérer récupérer le live des concerts où ils ont fait cette reprise — enfin pourquoi pas hein).
Tout ça pour dire que ta remarque, en plus de te faire passer pour un élitiste pédant du genre « moi j'écoute un truc que personne d'autre écoute, contrairement à la plèbe », occulte totalement d'autres pans de la création, certes pas libre, mais tout aussi confidentielle. Je sais, je sais, comme le disait Desproges : « c'est affreux le peuple. Je sais, j'en ai parmi mes gens. »
Je suppose que ce n'est pas ce que tu penses (rapport au côté « supérieur », etc.), mais je commence à en avoir marre de la généralisation à la limite de la condescendance (et bien souvent bien au-delà de la limite) concernant « ce con de peuple ».
Je vais donner un exemple très très stupide de pourquoi je déteste ça : je bosse dans une université américaine. Un des profs qui y bosse aussi est connu pour être très bon dans son domaine, mais aussi très incisif, et verbalement agressif. La secrétaire qui travaille dans mon service a une petite trentaine et deux enfants. Le prof en question discute avec elle, et en gros lui dit « Quand même c'est un peu con d'avoir fait des gosses avant d'avoir fini ton master, du coup t'as raté tes études. » Elle de répondre : « Au moins j'ai une vie sexuelle » (et, soit dit en passant, elle n'a pas l'air malheureuse dans sa vie en général). Tout ça pour dire, le « bon sens » des uns n'est pas forcément le même que celui des autres.
Donc ce que tu appelles « le niveau 0 de la réflexion », moi j'appelle ça tout bêtement une simplification. Mais c'est ce qui est génial avec la publication sur internet : on peut poster un commentaire pour faire des précisions.
[1] Si on considère Radio Classique comme média grand public, alors mon argument est un peu plus faible en ce qui concerne le classique, mais tient toujours la route pour le métal².
[2] Bien entendu, si on considère les magazines papier tels « Hard-Rock Magazine », on peut aussi arguer que mon argument devient fragile. Cependant, dans ce cas j'estime qu'on touche un public déjà restreint qui veut s'informer sur quelque chose de relativement confidentiel et nécessitant la lecture de magazines spécialisés³.
[3] Non rien, c'est juste que j'aime bien les notes de bas de page imbriquées. :)
[^] # Re: Interessant
Posté par lasher . En réponse au journal Répression et peines de prison. Évalué à 1.
Donc reproduire une œuvre originale (disons une peinture) sans l'accord de l'auteur, et la vendre à quiconque veut bien l'acheter¹, c'est OK, parce que de toute manière ce n'est pas l'originale ?
[1] Je fais une très grosse distinction entre vouloir se faire du fric sur le dos des gens qui ont fait le plus gros du boulot, et simplement reproduire et distribuer leur boulot pour rien sans aucun avantage pécuniaire (même indirect).
[^] # Re: MacOs
Posté par lasher . En réponse au journal Pourquoi cet engouement pour les "menu globaux". Évalué à 6.
Soyons bien clairs: j'aime les smart phones pour le principe (j'en ai pas, pour d'autres raisons), le côté « connecté en permanence », etc.
Mais le coup du « non mais en fait l'iPhone c'est bien à cause des cartes de fidélité, c'est ça la modernité coco », je trouve ça quand même ridicule. C'est pratique, je ne le nie pas (et j'habite les USA, je sais de quoi tu parles), mais c'est quand même de l'ordre du gadget.
[^] # Re: Vrai problème, mauvaise réponse...
Posté par lasher . En réponse au journal [Politique] Fillon veut taxer la Grèce^W graisse. Évalué à 2.
Tous les (pré-)diabétiques de la Terre te remercient de ta bienveillance... :)
[^] # Re: Gouverner, c'est prévoir. Limiter internet, c'est régresser.
Posté par lasher . En réponse au journal Horreur, enfer et damnation: Fin de l'illimité. Évalué à 2.
Soit dit en passant, c'est pour ça que je disais que je suis plus pour maintenir en pratique un certain ratio entre plus bas salaire de la boite Vs plus haut salaire, que de mettre un plafond "arbitraire" au pour tout le monde. Et comme je le disais, je sais bien qu'il y aura toujours un moyen d'abuser. Concernant les actionnaires d'une boite, j'estime que la rémunération qu'ils touchent en fin d'année grâce aux bénéfices de la boite devrait, elle aussi, entrer en ligne de compte (dans le ratio). Comment ? Je n'en ai pas la moindre idée...
[^] # Re: Ralala
Posté par lasher . En réponse au journal 2011: L'Odyssée de la Galaxy Tab, ou Stanley Kubrick sauvera-t-il Samsung ?. Évalué à 3.
C'est vrai mais dans ce cas Jobs n'allait pas s'attaquer lui-même...
[^] # Re: Gouverner, c'est prévoir. Limiter internet, c'est régresser.
Posté par lasher . En réponse au journal Horreur, enfer et damnation: Fin de l'illimité. Évalué à 4.
D'un point de vue idéologie, je rejoins souvent les idées annoncées par le Front de Gauche. Mon problème se situe au niveau de son patron... :) Mélanchon a la sale habitude de couper tout le monde tout le temps, ce qui me hérisse au plus haut point. A contrario Besancenot dont je ne partage pas les idées en général (du moins celles que j'ai pu entendre de sa part) a tendance à accepter le fait qu'on laisse parler les gens, puis quand c'est notre tour, on parle aussi (et surtout, très important, on dit aux autres de fermer leur gueule parce qu'on a eu la politesse de faire de même précédemment — ce que Besancenot a eu à faire à plusieurs reprises).
On pourrait croire que c'est petit, mais on élit un président non seulement pour ses idées, mais aussi pour qui il est. Il est grande gueule (ça, ça me dérange pas du tout), il monte vite sur ses grands chevaux (ça me gène un peu plus, mais ça passe), et il coupe les gens au point que ça me donne envie de gerber. Et ce d'autant plus que je suis d'accord avec lui sur le fond ! Je me souviens d'un débat avec une femme ultra-libérale, qui a finit par refuser de parler parce que Mélanchon n'a pas arrêté, de bout en bout, de la couper, hausser le ton, etc. C'est, selon moi, avoir une piètre idée de ce que doit être un débat dans une démocratie.
Pour en revenir au sujet initial, idéalement je suis pour le couplage salaire max (en fonction du salaire médian) + ratio max. Cependant, et même si je peux déjà voir quels abus ça peut induire, en pratique je préfèrerais avoir le ratio max seul. Parce que j'estime que ce n'est pas à l'État de décider ce qui est « suffisant » pour tout un chacun. Je me contente très bien de mon salaire actuel, mais en même temps je conçois que certains considèrent leur salaire comme pas suffisant (même si personnellement j'estime qu'ils n'ont sans doute pas besoin d'avoir autant d'argent dans leur situation, ce n'est que mon opinion).
Je connais des gens qui bossent dans une boite qui a décidé que le salaire X est suffisant comme salaire max¹, et qu'il n'y a pas de raison de payer plus. Quand on explique aux patrons que « ben oui mais je ne vis pas comme toi à 10 minutes du boulot », apparemment ils se réfugient derrière un « ah mais je veux pas t'imposer où tu habites, c'est ton choix ». Sauf que « ailleurs », ça peut parfaitement être quelque chose comme « à 20 minutes du boulot », sauf que l'immobilier est plus cher à cet endroit-là ...
[1] Note bien que le salaire en question tourne autour de 2800€/mois nets, ce qui n'est pas non plus un petit salaire, mais n'est pas bien grand non plus. Il faut bien avouer que ça fait quand même cher de payer l'idéologie de ses patrons alors qu'on sait qu'on pourrait être payé mieux pour un certain ensemble de compétences. Par exemple si je vois d'avoir un enfant et que je décide d'arrêter de bosser pendant 3 ans le temps qu'il puisse aller à la maternelle, et que ma copine bosse dans cette boite, ben exit cette option.
[^] # Re: Gouverner, c'est prévoir. Limiter internet, c'est régresser.
Posté par lasher . En réponse au journal Horreur, enfer et damnation: Fin de l'illimité. Évalué à 2.
À ce moment-là, je trouverais plus juste d'imposer un ratio maximal sur le plus bas salaire de l'entreprise (a priori le SMIC) Vs le plus haut salaire (probablement le PDG, mais pas toujours). Comme ça, si le grand chef veut voir son salaire augmenter, il est obligé d'augmenter mécaniquement le plus bas salaire.
Évidemment, ça signifie aussi que les petites boites qui ont cinq salariés peuvent se payer des sommes folles — à condition d'avoir le bénéfice qui va avec.
[^] # Re: templates variadiques
Posté par lasher . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 4.
Honnêtement, à moins d'avoir des tonnes d'objets à la durée de vie extrêmement courte qui partagent le même pointeur (ce qui peut arriver hein), la plupart du temps les opérations atomiques sont noyées dans la masse des autres opérations qui de toute manière doivent accéder à la RAM. De plus, si tu n'utilises pas d'opération atomique, je suppose que tu n'utilises pas de verrous non plus (vu que leur garantie d'atomicité se base sur… les opérations atomiques!).
Enfin, j'ai envie de dire que si tu veux avoir du comptage de référence personnalisé, le plus simple est de passer par un autre type de pointeur intelligent : intrusive_ptr (qui embarque un compteur de réf et tu dois fournir l'implémentation de certaines méthodes pour décrire comment en profiter).
Enfin, d'expérience, savoir quand un pointeur partagé ne va jamais être utilisé par un thread est difficile à évaluer. Autant n'avoir que des pointeurs partagés thread-safe, ou aucun, ça simplifie grandement les choses.
[^] # Re: templates variadiques
Posté par lasher . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 3.
J'oubliais, voici la source: http://www.boost.org/doc/libs/1_47_0/libs/smart_ptr/shared_ptr.htm
[^] # Re: templates variadiques
Posté par lasher . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 4.
D'après la doc de boost,
Donc si tu as deux threads, l'un qui lit le pointeur et l'autre qui l'écrit, le résultat est indéfini (race condition). À toi de fournir les verrous nécessaires pour que cela n'arrive pas.
La norme n'impose pas d'être lock-free.
Cependant, toujours d'après la même page,
Donc il existe un moyen d'être partagé sans passer par des instructions atomiques.
[^] # Re: consistent
Posté par lasher . En réponse au journal Oh mon dieu, ils ont changé l'interface de Blender!. Évalué à 2.
Euh non. Ce ne sont pas des synonymes du tout, c'est bien le problème. Si ça avait été le cas, j'aurais pas fait le caca nerveux que tu as vu plus haut. :)
Pour te donner un ordre d'idée, on a les différents modèles mémoire suivants:
Je ne vais pas commencer à faire un cours magistral sur les modèles mémoire, mais en gros si tu dis que tu veux utiliser « Coherence » comme modèle de « memory consistency » sur un système à mémoire partagée et distribuée, les gens vont te faire de gros yeux, t'insulter copieusement, et te demander comment tu espères faire ça de sorte que ça passe à l'échelle, etc.
[^] # Re: consistent
Posté par lasher . En réponse au journal Oh mon dieu, ils ont changé l'interface de Blender!. Évalué à 3.
Bon et je me répète encore une fois à chaque fois que je vois un commentaire sur « consistent » / « coherent » → « cohérent » : bordel de merde, est-ce que quelqu'un pourrait me trouver la traduction avec les bonnes nuances de « consistent » et « coherent » en VF ? Je m'explique : il existe ce qu'on appelle des « memory consistency models ». Parmi ceux-ci, il existe un modèle qui s'appelle « (cache) coherency », qui a un sens bien particulier. Du coup je me retrouve comme un con à garder les noms anglais parce que je n'ai jamais vu quiconque donner une version française correcte.
[^] # Re: templates variadiques
Posté par lasher . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 5.
Un mutex utilise au moins une instruction atomique justement pour garantir l'atomicité de la prise du mutex. Bref, un mutex va forcément coûter au moins aussi cher qu'une opération atomique, vu qu'elles sont à la base du verrouillage ... :-)
Aussi, 0.2 µs / 0.05 µs = 4. Pour les applications qui ne font pas usage trop fréquent de variables partagées/sections critiques ce n'est sans doute pas bien méchant, mais si une structure de donnée est très utilisée/mise à jour par beaucoup d'acteurs (disons, si je suis dans un système multicœur/HTT avec 32 ou 64 threads), on peut vite se retrouver avec de gros soucis de contention. Et dans ce cas, le facteur 4 n'est plus négligeable.
Enfin, étant donné que les structures de données non-blocantes sont extrêmement susceptibles aux bugs subtils, je me dis qu'il vaut sans doute mieux rester avec des structures à grain fin la plupart du temps ...
[^] # Re: templates variadiques
Posté par lasher . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 2.
Même pour shared_ptr, à moins de refiler ton pointeur comme une STD à tous les objets qui passent, tu ne paies le coût de l'opération atomique qu'occasionnellement.
[^] # Re: Thalès
Posté par lasher . En réponse au journal Le Cloud computing français. Évalué à 1.
Ben ici (USA) j'ai le choix : soit je tape mon prénom sans accent ( « Stephane » ) dans les formulaires, et je me retrouve avec quelque chose qui ressemble à mon nom; soit je le tape avec accent ( « Stéphane » ) et le colis, je le reçois au nom de « Stphane ».
Le choix est vite fait.
[^] # Re: Les développeurs libres préfèrent coder sur Mac OS X que Linux
Posté par lasher . En réponse au journal Les développeurs préfèrent Mac OS X à Linux. Évalué à 2.
Pour te citer : « Et puis faut lire aussi :) »
Je compile avec, j'écoute de la musique de temps en temps (mais honnêtement, le décodage de MP3 me fait perdre peut-être 15% d'autonomie par rapport à d'habitude, mais pas plus).
Je t'ai donné trois cas d'utilisation. Mon format : Nom / Processeur@Fréquence / Quantité RAM / Carte graphique / Autonomie = {nominale, en pratique pour Navigateur+terminaux+compilation+LaTeX+PDF, en lisant un DivX}
Quant à mes utilisations du dernier PC, elles sont très simples : quand je suis sur batterie, 90% du temps je ne fais qu'aller sur le web et coder, avec un peu de SSH en prime. Ça veut tout de même dire que j'ai des vidéos YouTube/flash qui tournent régulièrement, des applis web remplies de JavaScript qui font tourner le processeur, etc.
Je regarde aussi des vidéos de temps à autre (mais je n'utilise jamais ou presque le lecteur DVD).
Quand le portable est branché sur une prise, ben je fais ... plus ou moins tout ça (avec p'tet Eclipse en plus par rapport à ViM de temps à autres), je mate des DivX, et euh, ben... Mmmhh. Laisse-moi réfléchir. Ah oui, de temps en temps je reboote sous Windows pour jouer à un jeu vidéo. Et puis c'est tout. Ou bien j'utilise Dia aussi, tiens. Ou Inkscape. Dans tous les cas, mis à part
Toi tu fais quoi avec ta machine qui fait que ton utilisation est tellement supérieure ? Du montage vidéo ? J'en fais jamais, et je n'en ai jamais eu l'utilité (pas de caméra, rien). Du montage photo ? Je prends des photos avec mon APN, je les stocke, ça prend en moyenne 2 minutes. Rien qui pompe réellement sur le PC. Du coup, vraiment je me demande ce que tu peux bien faire sur ton portable qui soit si monstrueusement énergievore partout sauf sur un MacBook Pro.
[0] À noter qu'à l'époque, l'iBook avait sans doute le meilleur rapport qualité-prix pour ce qui était du poids Vs autonomie Vs prix dans l'entrée de gamme (~ 1000€ avec 256 Mio, donc ~1150€ pour 2,2kg là où beaucoup faisaient dans les 3kg pour le même prix et avec une autonomie divisée par deux).
[1] Je précise car le cache est un gros siphon en ce qui concerne la consommation électrique. OK en pratique le Core i7 en lui-même est un siphon, mais bon ... :) C'est pas pour l'autonomie que j'ai acheté ce PC.
[^] # Re: SMEP et la segmentation
Posté par lasher . En réponse à la dépêche Le noyau Linux est disponible en version 3.0. Évalué à 2.
Ah oui, j'oubliais, concernant les x86 (Intel et AMD) il y a www.agner.org.
[^] # Re: Les développeurs libres préfèrent coder sur Mac OS X que Linux
Posté par lasher . En réponse au journal Les développeurs préfèrent Mac OS X à Linux. Évalué à 3.
Malgré ton ton agressif, je te suivais jusqu'à cette phrase car cela me semblait sensé. Maintenant, ce que tu considères être un vrai usage n'a rien d'universel. Mon portable actuel fait dans les ~3h d'autonomie, et sans doute bien moins (disons la moitié) si je lis un DVD ou même un DivX. Mais dans 90% des cas, je m'en sers pour deux choses : aller sur le net via FF/Chrome/Blah (sans flash la plupart du temps), ou bien utiliser un terminal et coder (avec en plus le visionnage de PDF). De temps en temps, je compile aussi. Résultat : les 3h15 nominales sont bien atteintes dans mon cas. Idem sur mon EeePC avec ~8-10h d'autonomie (et là encore, je faisais du web et du code dessus).
Et c'était aussi pareil sur mon ibook (PowerPC 800MHz) il y a quelques années : il tenait bien ses 5-6h nominales (en « début » de vie de batterie bien entendu¹) simplement parce que j'en faisais un usage relativement spartiate : Safari, terminal, vim, gcc, latex. De temps en temps VLC.
[1] Vers la fin (après environ 3 ans), s'il tenait 2h j'étais bien content. Mais 80€ et une commande eBay chez un Chinois (un vrai, de Hong-Kong) plus tard, j'avais de nouveau une batterie correcte.
[^] # Re: Bon matos ?
Posté par lasher . En réponse au journal Les développeurs préfèrent Mac OS X à Linux. Évalué à 4.
J'ai aussi eu le problème à plusieurs reprises sur Mac OS X (10.3). J'aime globalement bien Mac OS X, mais bon, oui, des kernel panic, des clefs USB qui font bloquer l'OS, j'en ai eu aussi. Globalement, je dirais que Mac OS X a planté aussi souvent que Linux avec moi. Sans doute même un petit peu plus (mais pour être honnête, je n'ai jamais mis à jour l'ibook avec OS X 10.3 pour mettre un Tiger ou autre...).
[^] # Re: SMEP et la segmentation
Posté par lasher . En réponse à la dépêche Le noyau Linux est disponible en version 3.0. Évalué à 8.
Alors, niveau articles électroniques, il y a les incontournables de Wikipedia: Segmentation_(informatique) et Pagination_(informatique). Si tu comprends l'Anglais, il ne faut pas oublier d'aller voir la version anglaise de ces pages (souvent plus complètes).
Niveau bouquins papier, je connais quelques références :
Le bouquin sur les SE de Tanenbaum est très bien fait, décrit les différents problèmes qui se posent pour tout SE récent, et montre comment différents SE tentent de résoudre ces mêmes problèmes de différentes façon (Linux, Windows 2000). Il explique aussi quels mécanismes matériels sont indispensables à un SE moderne pour assurer certaines fonctionnalités (TLB pour l'interaction entre mémoire virtuelle, mémoire physique, caches; Test & Set ou Compare & Swap pour l'implémentation de verrous et de sections critiques en règle générale; etc.).
Le bouquin de Tanenbaum sur l'archi des ordinateurs est supposé être très bon, mais je ne l'ai jamais lu.
Le bouquin de Baer est une excellente introduction à l'architecture moderne des ordinateurs, avec un chapitre final qui explique comment sont architecturés des microprocesseurs avec plusieurs cœurs. Il décrit aussi comment fonctionne un microprocesseur avec instructions exécutées dans le désordre (« out-of-order engine »), comment les mémoires cache sont accédées, etc.
Les deux bouquins de Hennessy & Patterson sont pour moi deux « bibles ». La première référence se situe « juste en dessous » du bouquin de Tanenbaum sur les OS. Le deuxième aborde des mécanismes relativement avancés utilisés dans les µ-proc actuels. Les exercices se chargent de faire « construire » un µ-proc RISC simplifié au lecteur.
[^] # Re: Argument pour les principaux intéressés.
Posté par lasher . En réponse au journal Des livres verrouillés. Évalué à 5.
La réponse d'un auteur sera toujours la même : « Mon éditeur veut pas. Mon seul boulot, c'est auteur. J'ai un crédit de 20 ans sur ma maison. Je fais comment ? »
Je sais, tous les artistes pourraient dire pareil. Mais la vérité, c'est que faire quelque chose au nom de l'éthique, c'est bien, mais montrer que ça te permet de gagner (au sens d'économiser) des sous, c'est mieux. Et ça n'a rien à voir avec le capitalisme, le libéralisme, ou que sais-je. C'est très simple : penser aux autres, et essayer de faire plaisir à l'Humanité n'est généralement possible que si tu ne te pose pas constamment la question de quand tu vas manger la prochaine fois, ou si tu vas pouvoir payer ton loyer ce mois-ci.
Pour faire une analogie foireuse : être écolo c'est bien, et inciter les gens à recycler c'est bien aussi. Augmenter sensiblement le prix des bouteilles en plastique (avec un système de consigne en gros), et dire aux gens « on vous rend 0,5€ pour chaque bouteille (recyclable) que vous rendez » ça parle au porte-feuille des gens de bien meilleure façon au final.