Posts Tagged préprocesseur

Perfs : factoriser les if() au runtime grâce aux templates

Une petite bidouille que j'ai été amené à faire et qui je pense vaut le coup d'être partagée : je me suis retrouvé à devoir effectuer un même traitement sur un nombre important d'éléments (ex : on parcourt tous les pixels d'une image pour changer la luminosité...), mais je voulais pouvoir effectuer certaines parties de mon traitement de manière optionnelle, suivant certaines options de configuration. En gros, j'avais quelque chose sous la forme :

for e in elements
   if bOption1
      traitement 1
   if bOption2
      traitement 2

Ce qui est plutôt mauvais d'un point de vue performances (on fait des tests pour rien, et les sauts conditionnels c'est pas ce qu'il y a de mieux non plus).
Idéalement, je voudrais que la résolution des conditions bOption1 et bOption2 soit faite en dehors de la boucle, et que la boucle n'effectue que les traitements qui m'intéressent.

Read the rest of this entry »

, , ,

No Comments

Préprocesseur et énumérations : la suite.

Cet article fait suite à mon premier article intitulé "Faire un peu joujou avec le préprocesseur"
(disponible ici : http://www.coder-studio.com/blog/preproc/ ).

Pour rappel, nous en sommes restés à un système de macro qui permettait d'automatiser la création
d'un opérateur "< <" pour iostream, capable d'afficher le nom d'une énumération.

Read the rest of this entry »

, , ,

2 710 Comments

Faire un peu joujou avec le préprocesseur...

Ça faisait un bail que je n'écrivais pas sur Coder-Studio...
Chose réparée :)

Du 17 au 19 avril 2009, a eu lieu la finale de Cod'INSA, un concours de programmation inter-INSA,
qui s'est déroulée à l'INSA de Toulouse (plus d'infos sur http://codinsa.insa-lyon.fr pour les intéressés).
Faisant partie des organisateurs, j'ai eu à faire l'interfaçage C++/Java (oui parce qu'il y en a qui veulent
participer en Java...allez comprendre :p [/troll]). J'y ai découvert les joies de GCJ et de CNI, ce qui
pourra peut-être être l'objet d'un autre article, selon ma motivation...

Bref, tout ça pour dire qu'il m'a fallu interfacer une librairie écrite en C avec du Java, et qu'il a fallu
automatiser un peu le boulot pour la partie concernant les énumérations.

Dans cet article, je vais illustrer une méthode pour faciliter l'affichage des valeurs des énumérations.
En gros, le but, c'est que si l'on a :

MonEnumeration e = E_VAL_1;
std::cout < < e << std::endl;

il s'affiche alors à l'écran "E_VAL_1".

Read the rest of this entry »

, ,

9 Comments