Canalblog
Suivre ce blog Administration + Créer mon blog

L'Esprit du Code

4 janvier 2016

La recherche du plaisir

Souvent, le développeur et plus généralement la R&D, privilégie une technologie ou un langage à la mode au détriment d’un langage plus adapté jugé “has been” ou cherche à élaborer des algorithmes compliqués peu efficace.

A maintes reprises, on m’a argumenté “mon programme est multi thread”

Comme si pour réduire les problèmes de bouchons, on construisait des autoroutes à 50 voies. Si on n’augmente pas le débit aux péages, c’est comme un coup d’épée dans l’eau.

Il faut réduire les points de contention et non chercher à faire du parallélisme.

Un mauvais ordre ou un mauvais geste conduit souvent à la défaite.

Il faut faire faire à l’ordinateur ce que l’on veut qu’il fasse et non le laisser faire.

En Aïkido, on aspire l’adversaire pour qu’il se place dans la position que l’on a choisit tout en lui laissant croire qu’il en a eu l’initiative.

Publicité
Publicité
15 décembre 2015

Le casse tête du chef de projet

Il doit répondre à deux équations : coût et délais. C’est pourquoi, ce qui paraît simple est confié à des juniors et ce qui paraît complexe, à des personnes plus expérimentés, sans tenir compte du code critique, le code qui sera exécuté de très nombreuses fois.

Pour une itération d’un million de fois, chaque milliseconde perdu représente au total environ 20 minutes de traitement.

Le programme est une traduction d’une fonctionnelle issue d’un esprit humain en code qui sera exécuté par une machine. Hors,  l’esprit humain est capable de faire des choses complexes avec peu de données alors que l’ordinateur peut faire des choses simples avec beaucoup de données.

Quel développeur prendrait le risqué de s’éloigner de la fonctionnelle pour se  rapprocher de la machine ?

Prenons l’exemple d’une tournée de facteur. La fonctionnelle dit : pour chaque rue, pour chaque numéro, on met les lettres dans les boites correspondantes.

Que va faire l’ordinateur ? Il va traverser la rue à chaque fois.

La bonne instruction aurait été de dire de commencer par les numéros pairs ou impairs, selon la position du facteur lorsqu’il arrive dans la rue et de traiter d’abord un coté puis l’autre. Ainsi, il ne traversera la rue qu’une fois. Et à son retour au bureau de poste, il pourra proposer un ordre de tri adapté à sa tournée.

Il faut donner les bonnes instructions à un ordinateur car il les exécutera sans rechigner contrairement au facteur qui va lui même corriger l’algorithme pour optimiser ses déplacements.

14 décembre 2015

Pourquoi les programmes ne sont pas performants ?

Ils l’étaient suffisamment lors de leur mise en service, mais pour diverses raisons, les temps de traitement se dégradent.

Parmi ces raisons :

  • l’augmentation des volumes de données,
  • l’ajout de fonctionnalités,
  • la mise à jour du Système d’Exploitation ou de la base de données…

Les tests de performance sont souvent effectués sur une estimation de volume. 

Quel athlète s’entrainerait pour sauter 2m50 alors que le record du monde est de 2m45 ?

17 novembre 2015

Types d’optimisation

I - Optimisation non-invasive

Améliorer le temps du traitement en ne modifiant ni la logique, ni le code

  • analyse des E/S,
  • amélioration des plans d’exécution (bases de données).

Avantage

Cette méthode ne nécessite pas de phase de validation

Inconvénient

Résultats limités

 

II - Optimisation invasive

  1er niveau : travail au niveau local du code

  • recherche des procédures itératives,
  • réduction des requêtes atomiques,
  • analyse des contrôles.

Avantage

Cette méthode ne nécessite qu’une phase de validation réduite

La maîtrise globale du traitement n’est pas indispensable

Inconvénient

Résultats pas toujours suffisants

 

  2ème niveau : travail au niveau global du traitement

  • étude de la logique du traitement,
  • enchaînement des tâches,
  • traitements par lot.

Avantage

Gains pouvant être très importants

Inconvénient

Cette méthode nécessite une phase de validation complète ainsi qu’un jeu d’essais permettant de balayer tous les cas de test

La maîtrise globale du traitement est indispensable

 

 

16 novembre 2015

A qui s’adresse ce blog ?

Il s’adresse principalement aux DSI, souvent décideurs des moyens à mettre en œuvre lors de problèmes de performance qui peuvent entrainer la paralysie du SI.

Il s’adresse également à toute personne de la maîtrise d’ouvrage ou de la maitrise d’œuvre confronté à ce type de problème.

Publicité
Publicité
4 novembre 2015

Ma spécialité : l’Optimisation du SI

La performance du SI au sens efficacité des traitements et les interventions d’urgence.

Contrairement aux sites destinés à l’Optimisation continue, je parlerai surtout de mon expérience et de mes interventions curatives.

27 octobre 2015

Choix du titre

Le titre est très important pour un blog. C'est du moins ce que je pense.

J'ai choisi ce titre en référence à mon livre de chevet : "L'Esprit du Geste, petite sagesse des Arts Martiaux" d'Arnaud Cousergue.

Je recommande fortement ce livre, aux pratiquants d'Arts Martiaux et aux autres. 

J'ai beaucoup hésité entre "L'Efficacité du Code" et "L'Esprit du Code". J'ai préféré Esprit car ça me parait plus vivant. "Code", car il est au coeur de mon métier, c'est pour moi la partie noble de l'informatique et également en référence au "Code d'honneur du Budo".

Publicité
Publicité
L'Esprit du Code
  • Je souhaite, à travers ce blog, partager des expériences que j’ai vécues ainsi que des sujets de réflexion autour de l’efficacité du code et naturellement de l’optimisation des systèmes d’Information.
  • Accueil du blog
  • Créer un blog avec CanalBlog
Publicité
Archives
Publicité