Il arrive souvent qu'un développeur soit confronté à un choix entre deux façons de résoudre un problème : l'une est idiomatique et lisible, l'autre est moins intuitive, mais peut être plus performante. Par exemple, dans les langages basés sur le langage C, il existe deux façons de multiplier un nombre par 2 :
int SimpleMultiplyBy2(int x)
{
return x * 2;
}
et
int FastMultiplyBy2(int x)
{
return x << 1;
}
La première version est plus simple à comprendre pour les lecteurs techniques et non techniques, mais la seconde peut être plus performante, car le décalage de bits est une opération plus simple que la multiplication. (Pour l'instant, partons du principe que l'optimiseur du compilateur ne détectera pas cette opération et ne l'optimisera pas, bien que cela soit également envisageable).
En tant que développeur, quelle serait la meilleure solution pour une première tentative ?