Quand il y a trop d'information, il faut aller au niveau au dessus ("meta") pour être capable soi-même d'aller mettre les informations dans les bonnes cases. L'exemple est la physique des ondes qui se retrouve en mécanique, électronique analogique et en optique. Beaucoup de traitement du signal ne fait que reprendre les maths, liés aux matrices.
Ce genre de chose se trouve dans toutes les "sciences humanistes".
Il existe aussi une science dure concernant les phénomènes de rétroaction, qui expliquent aussi beaucoup de chose. Par exemple, un système rapide tant a ressembler à ses informations utilisé
en rétroaction, et non à son but d'origine (cf l'effet des évaluations dans la police).
En Paca, tu manges bien à 30€/personne sans vin, tu manges très bien pour 40€, et au dessus, cela n'a plus trop de limites. La bouteille de vin revient souvent au prix d'une personne à ajouter pour 3 ou 4.
Disons que dans le coin le moins chère que je connaisse (entre Lyon et Saint Étienne), pour 250/300k€, tu as une maison de 120m², au lieu d'un appartement.
Tes prix sont comparables aux miens (cote d'azur).
F3, c'est 3 pièces, 2 chambres plus salon (cuisine/salle de bain/WC ne sont pas compté).
A Antibes, le m² varie de 5000 à 10000€/m² en front de mer, soit le 100m² de 500k€ à 1M€. Pour les villas sur le cap d'Antibes, je ne te dis pas :) (le coin de Paul Allen)
Je parle du 06, à Paris, et les villes qui touche Paris, c'est encore plus chère (je crois que la valeur médian, c'est 7k€/m²).
Tu as bien plus que l'absence de cout de l'appel de fonction (tu as de la simplification en +) ! Dans un gros code, avec des appels dans tous les sens, tu as très peu de probabilité que ta fonction utilitaire soit dans le cache, alors que les prefetch locaux font que tu as toutes les chances que le code de ta fonction en cours, y soit.
Non, tu te trompes lourdement. Il y a plein de cas ou l'inlining est plus petit. Un getter/setter inliné peut réduire le code de la fonction appelante, alors qu'un call prend 2 instructions. C'est vrai pour chaque fonction appelante.
Tu as aussi les cas à plusieurs branches, où la simplification s’arrête faute d'information, si la propagation de constante continue, une partie entière de code disparait.
J'ai aussi le cas de constante composé à coup de "PLOP | PLIP" qui ne font que changer une constante de code, au lieu d'un appel de fonction, avec sauvegarde des registres.
Ton postulat faux de base est que l'inline ajoute toujours du code, et que dans le bilan il faut retirer le code d'appel et tenir compte du code de la fonction elle-même. Mais dans les faits, pour certaine fonctions, cela simplifie tellement le code appelant, que pour chaque inline, la fonction appelante est réduite.
J'ai un énorme doute sur les prix dont tu parles. Combien pour un F3 de 70m² dans ton coin ? (sachant qu'un américain m'avait dit qu'un appartement de moins de 100m² F4, cela n'existait pas dans sa ville); Combien pour une maison de F5 de 120m² avec 800m² de terrain ?
Un F3 bien dans ma région c'est 300k€. La maison, c'est plutôt 600/700k€.
Une relecture fait par soi-même, ce n'est pas une relecture.
Ensuite, est-ce que vous avez fait des fiches de relecture ? Genre une série de point à vérifier (ex: est-ce que le coding standard est respecté ? Est-ce qu'il peut y avoir des divisions par zéro ?, est-ce que des exceptions peuvent remonter sans être pris en charge ? etc…)
" il y a le fait que ça augmente la taille du code et met donc plus de pressions sur le(s) cache(s) et au final peut ralentir l'exécution d'un programme complexe (ce qui ne se verra pas forcément dans un micro benchmark)."
Il faut arreter avec ce genre d'argument tarte à la crème. La vrai réponse est "cela dépend".
Quand le code est inliné, il y a toutes les passes de simplification qui repassent dessus et le code peut être plus petit. En gros, un peu d'inlining réduit la taille du code, jusqu'à un certain point, ou il faut arreter d'inliner.
De mon coté, j'ai dit que je quitterais l'informatique, lorsque l'informatique quantique aura remplacé l'informatique classique. Il faut totalement repenser la manière d'écrire un algorithme, et penser complètement différement.
C'est vrai que dans mon dernier programme ocaml, dans lequel je parse un paquet de fichier (milliers), une partie de la lenteur provenait des string utilisés pour les conversions, or il n'est pas possible de réutiliser la mémoire utilisé par un string, sachant que les fichiers étaient utilisé l'un après l'autre. Cela aurait été trivial en C, par exemple.
Sinon, llvm peut aider pour la génération de code, mais ce qui accélère vraiment est de plus haut niveau.
Ocaml est très bon, par rapport au peu d'effort sur sa compilation. Mais il pourrait faire bien mieux, justement parce que le langage comporte plus d'info pour le compilo. Il pourrait faire bien plus de spécialisation et d'inlining.
Les codes purement calculatoires ne sont pas connu pour être très rapide en ocaml, car le boxing fait souvent mal.
Le code généré passe trop souvent par la mémoire, au lieu d'utiliser les registres plus rapides. On dirait qu'il n'y a pas de scheduling statique des instructions pour éloigner les dépendances read-after-write, ou de déroulage de boucle, pour que le code soit encore plus parallélisable (gcc déroule les boucles 16 fois, 4 fois permet souvent d'utiliser uniquement les registres, tout en restant compacte).
Non certainement pas pour un ingénieur logiciel. J'ai le cas très précis d'un voisin parti à Boston.
Le seul désagrément sont les 3 semaines de congé au lieu de 5 (les grosses boites font cadeau d'une semaine en général). Son salaire net est quasiment double. Pour le prix d'un F3, il a une maison de 200m² avec jardin. Tous les prix de la vie quotidienne sont moins chère qu'en France (en gros 1$ = 1€). Sa boite lui paye son assurance, qui est au niveau des meilleurs mutuelles françaises (+sécu).
Il a 2 enfants, et ne semble pas du tout pressé de partir.
Mais pour une boite, les salaires R&D français sont peu élevés. Un PDG d'une boite japonaise disait que la France était le Maroc de la R&D…
Le problème de la duplication de code de C++ venait des compilateurs qui créait une fonction à chaque instance paramétrique. Dans les faits, il y a seulement une poignée de types différents utilisés pour un template donné. Un code spécialisé est tout de même beaucoup plus rapide qu'un code universel comme le génère ocaml, en tout cas pour des objets simples.
[^] # Re: Enseignement
Posté par Nicolas Boulay (site web personnel) . En réponse au journal L'économie cette méconnue. Évalué à 2.
Quand il y a trop d'information, il faut aller au niveau au dessus ("meta") pour être capable soi-même d'aller mettre les informations dans les bonnes cases. L'exemple est la physique des ondes qui se retrouve en mécanique, électronique analogique et en optique. Beaucoup de traitement du signal ne fait que reprendre les maths, liés aux matrices.
"La première sécurité est la liberté"
[^] # Re: Pourquoi les gens comprennent aussi bien l'économie que les (pseudo-)experts ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal L'économie cette méconnue. Évalué à 3.
En même temps, modéliser un système économique réaliste devient de plus en plus accessible avec l'augmentation de puissance des ordinateurs.
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
Fait le calcul, sans vin, cela revient à 40$ (en prenant (20$+10$)*1.2*1.09).
"La première sécurité est la liberté"
[^] # Re: Pourquoi les gens comprennent aussi bien l'économie que les (pseudo-)experts ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal L'économie cette méconnue. Évalué à 1.
Ce genre de chose se trouve dans toutes les "sciences humanistes".
Il existe aussi une science dure concernant les phénomènes de rétroaction, qui expliquent aussi beaucoup de chose. Par exemple, un système rapide tant a ressembler à ses informations utilisé
en rétroaction, et non à son but d'origine (cf l'effet des évaluations dans la police).
"La première sécurité est la liberté"
[^] # Re: Pourquoi les gens comprennent aussi bien l'économie que les (pseudo-)experts ?
Posté par Nicolas Boulay (site web personnel) . En réponse au journal L'économie cette méconnue. Évalué à 7.
Tout ce que tu dis contre l'économie peut se dire contre toutes les sciences dites humaines : sociologie, anthropologie, histoire, psychologie, etc…
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
En Paca, tu manges bien à 30€/personne sans vin, tu manges très bien pour 40€, et au dessus, cela n'a plus trop de limites. La bouteille de vin revient souvent au prix d'une personne à ajouter pour 3 ou 4.
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
Disons que dans le coin le moins chère que je connaisse (entre Lyon et Saint Étienne), pour 250/300k€, tu as une maison de 120m², au lieu d'un appartement.
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
Tes prix sont comparables aux miens (cote d'azur).
F3, c'est 3 pièces, 2 chambres plus salon (cuisine/salle de bain/WC ne sont pas compté).
A Antibes, le m² varie de 5000 à 10000€/m² en front de mer, soit le 100m² de 500k€ à 1M€. Pour les villas sur le cap d'Antibes, je ne te dis pas :) (le coin de Paul Allen)
Je parle du 06, à Paris, et les villes qui touche Paris, c'est encore plus chère (je crois que la valeur médian, c'est 7k€/m²).
"La première sécurité est la liberté"
[^] # Re: la performance par l'inlining
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 3.
Tu as bien plus que l'absence de cout de l'appel de fonction (tu as de la simplification en +) ! Dans un gros code, avec des appels dans tous les sens, tu as très peu de probabilité que ta fonction utilitaire soit dans le cache, alors que les prefetch locaux font que tu as toutes les chances que le code de ta fonction en cours, y soit.
"La première sécurité est la liberté"
[^] # Re: la performance par l'inlining
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 2.
Les autres optims dont je parle est, bien sur, la propagation de constante et l'élimination de code mort.
"La première sécurité est la liberté"
[^] # Re: la performance par l'inlining
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 2.
Non, tu te trompes lourdement. Il y a plein de cas ou l'inlining est plus petit. Un getter/setter inliné peut réduire le code de la fonction appelante, alors qu'un call prend 2 instructions. C'est vrai pour chaque fonction appelante.
Tu as aussi les cas à plusieurs branches, où la simplification s’arrête faute d'information, si la propagation de constante continue, une partie entière de code disparait.
J'ai aussi le cas de constante composé à coup de "PLOP | PLIP" qui ne font que changer une constante de code, au lieu d'un appel de fonction, avec sauvegarde des registres.
Ton postulat faux de base est que l'inline ajoute toujours du code, et que dans le bilan il faut retirer le code d'appel et tenir compte du code de la fonction elle-même. Mais dans les faits, pour certaine fonctions, cela simplifie tellement le code appelant, que pour chaque inline, la fonction appelante est réduite.
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
J'ai un énorme doute sur les prix dont tu parles. Combien pour un F3 de 70m² dans ton coin ? (sachant qu'un américain m'avait dit qu'un appartement de moins de 100m² F4, cela n'existait pas dans sa ville); Combien pour une maison de F5 de 120m² avec 800m² de terrain ?
Un F3 bien dans ma région c'est 300k€. La maison, c'est plutôt 600/700k€.
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
On m'a dis que pour comparer le niveau de vie France/US, il fallait prendre 1€=1$ pour les prix de la vie de tous les jours.
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
par an, je voulais écrire :)
"La première sécurité est la liberté"
[^] # Re: hint: PHP
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 4.
Une relecture fait par soi-même, ce n'est pas une relecture.
Ensuite, est-ce que vous avez fait des fiches de relecture ? Genre une série de point à vérifier (ex: est-ce que le coding standard est respecté ? Est-ce qu'il peut y avoir des divisions par zéro ?, est-ce que des exceptions peuvent remonter sans être pris en charge ? etc…)
"La première sécurité est la liberté"
# Sauver des postes de profs ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Au secours du BTS IRIS (Informatique et Réseaux pour l'industrie et les Services). Évalué à 1.
Comment ça ? Vous refusez de faire disparaitre un diplôme ayant de la valeur, pour sauver les postes de quelques professeurs ?
Mauvais élèves, va !
"La première sécurité est la liberté"
[^] # Re: Il serait peut-être temps d'utiliser des langages modernes
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 2.
Il faudrait que je me replonge dans mon code pour revoir le problème.
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 3.
En même temps, un salaire de plus de 100k€/mois pour une personne technique, c'est de la SF en France.
"La première sécurité est la liberté"
[^] # Re: Il serait peut-être temps d'utiliser des langages modernes
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 2.
Le problème sont les fonctions de conversion qui n'existe que pour string. Unix.read est sans doute un moyen a étudier.
"La première sécurité est la liberté"
[^] # Re: la performance par l'inlining
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 5.
" il y a le fait que ça augmente la taille du code et met donc plus de pressions sur le(s) cache(s) et au final peut ralentir l'exécution d'un programme complexe (ce qui ne se verra pas forcément dans un micro benchmark)."
Il faut arreter avec ce genre d'argument tarte à la crème. La vrai réponse est "cela dépend".
Quand le code est inliné, il y a toutes les passes de simplification qui repassent dessus et le code peut être plus petit. En gros, un peu d'inlining réduit la taille du code, jusqu'à un certain point, ou il faut arreter d'inliner.
"La première sécurité est la liberté"
[^] # Re: Précisions nécessaires
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 2.
De mon coté, j'ai dit que je quitterais l'informatique, lorsque l'informatique quantique aura remplacé l'informatique classique. Il faut totalement repenser la manière d'écrire un algorithme, et penser complètement différement.
"La première sécurité est la liberté"
[^] # Re: Il serait peut-être temps d'utiliser des langages modernes
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 2.
C'est vrai que dans mon dernier programme ocaml, dans lequel je parse un paquet de fichier (milliers), une partie de la lenteur provenait des string utilisés pour les conversions, or il n'est pas possible de réutiliser la mémoire utilisé par un string, sachant que les fichiers étaient utilisé l'un après l'autre. Cela aurait été trivial en C, par exemple.
Sinon, llvm peut aider pour la génération de code, mais ce qui accélère vraiment est de plus haut niveau.
"La première sécurité est la liberté"
[^] # Re: Il serait peut-être temps d'utiliser des langages modernes
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 1.
Ocaml est très bon, par rapport au peu d'effort sur sa compilation. Mais il pourrait faire bien mieux, justement parce que le langage comporte plus d'info pour le compilo. Il pourrait faire bien plus de spécialisation et d'inlining.
Les codes purement calculatoires ne sont pas connu pour être très rapide en ocaml, car le boxing fait souvent mal.
Le code généré passe trop souvent par la mémoire, au lieu d'utiliser les registres plus rapides. On dirait qu'il n'y a pas de scheduling statique des instructions pour éloigner les dépendances read-after-write, ou de déroulage de boucle, pour que le code soit encore plus parallélisable (gcc déroule les boucles 16 fois, 4 fois permet souvent d'utiliser uniquement les registres, tout en restant compacte).
"La première sécurité est la liberté"
[^] # Re: qui sait
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Développeur, ou comment sur-évaluer ses compétences. Évalué à 4.
Non certainement pas pour un ingénieur logiciel. J'ai le cas très précis d'un voisin parti à Boston.
Le seul désagrément sont les 3 semaines de congé au lieu de 5 (les grosses boites font cadeau d'une semaine en général). Son salaire net est quasiment double. Pour le prix d'un F3, il a une maison de 200m² avec jardin. Tous les prix de la vie quotidienne sont moins chère qu'en France (en gros 1$ = 1€). Sa boite lui paye son assurance, qui est au niveau des meilleurs mutuelles françaises (+sécu).
Il a 2 enfants, et ne semble pas du tout pressé de partir.
Mais pour une boite, les salaires R&D français sont peu élevés. Un PDG d'une boite japonaise disait que la France était le Maroc de la R&D…
"La première sécurité est la liberté"
[^] # Re: Il serait peut-être temps d'utiliser des langages modernes
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 6.
Le problème de la duplication de code de C++ venait des compilateurs qui créait une fonction à chaque instance paramétrique. Dans les faits, il y a seulement une poignée de types différents utilisés pour un template donné. Un code spécialisé est tout de même beaucoup plus rapide qu'un code universel comme le génère ocaml, en tout cas pour des objets simples.
"La première sécurité est la liberté"