mardi 21 octobre 2014

Les astuces d'optimisation d'Andrei Alexandrescu

La présentation d'Andrei Alexandrescu à la CPP Con vaut le détour. Contrairement à d'autres présentations, qui sont plutôt sur le thème "comment utilise-t-on le C++ chez nous", celle là présente un certain nombre de micro-optimisations dans du code très commun. Deux sujets en particulier: l'inline des constructeurs et destructeurs (réponse: ça dépend, il faut mesurer!), et l'optimisation des pointeurs à comptage de références.

Parmis les trucs proposés, il en est un qui est particulièrement subtil: la plupart des pointeurs partagés le seront finalement assez peu, c'est à dire que le compteur de référence va rarement monter très haut. Par conséquent, il est possible de chouraver deux bits au pointeur, ce qui est généralement possible grâce aux politiques d'alignement, et d'utiliser ces bits pour le comptage de références. Si par malheur le nombre de référence devient trop haut, on logge, et on arrête de compter. L'on a une fuite mémoire, mais c'est un tradeoff généralement acceptable, il suffit de redémarrer le programme régulièrement.

Chez Facebook, ce genre d'optimisations, qui font gagner des dixièmes de pour cent de performances, sont critiques: sur l'ensemble de leurs datacentres, ce sont des millions de dollars économisés.

dimanche 5 octobre 2014

Systemd

Derrière cette appellation qui me fait plutôt rigoler en français se cache un redoutable troll qui a secoué Internet. Systemd, remplacement bienvenu du vénérable sysV init avec configuration simplifiée et excellentes performances au démarrage, ou rigide usine à gaz qui veut tout faire tout en étant impossible à débugger?

C'est hier que j'ai commencé à m'y intéresser, puisque par une de ces bizarreries du système de dépendances dont Debian a le secrêt, il m'a fallu y passer pour pouvoir ré-installer mon driver d'imprimante.

La bonne nouvelle, c'est que tout marche comme avant. Le démarrage est peut-être un poil plus rapide, mais sans plus.

En revanche, le point négatif, c'est que l'on ne voit strictement rien au démarrage: 3 lignes d'init, dont 2 qui me parlent de mes partitions. En particulier, quand ext3 décide de faire un fsck, je ne vois pas la jauge. Ça ne change évidemment rien au temps réel du fsck, mais au moins, je savais si ça valait le coup de rester devant ma machine, ou si je pouvais aller me chercher un dessert.

M'enfin, c'est le sens de l'histoire, paraît-il. Je garde un œil sur la bête.

samedi 4 octobre 2014

La comète 67P dans votre Blender

Vous attachez-vous aux pérégrinations de la sonde Rosetta autour de la comète 67P? Pour ceux qui ne suivent pas, il s'agit d'une mission de l'Agence Spatiale Européenne qui consiste à envoyer une sonde s'approcher à quelques centaines de kilomètres d'une comète pour l'étudier sous toutes les coutures, et, dans quelques semaines, carrément l'aborder via une sorte de harpon. L'ESA poste continuellement de nouvelles photos, et, tout dernièrement, sur leur blog, carrément le fichier objet de la comète tel que généré à travers les multiples prises de vues du caillou.

Voilà donc la comète chargée dans Blender, et rendue sans plus de façons. Ce serait probablement le moment de ressortir les tutoriels pour afficher des fonds étoilés.

Voilà un objet sympathique pour s'amuser avec Blender. Voire tenter de modeler la sonde Rosetta qui tourne autour?