Mais parfois, les spécifications sont crétinement mathématiques. Ca n'est quand même pas si on te demandait de coder l'écoulement rhéologique d'un plastique fondu(pour les experts : d'un polymère plastifié) dans un moule. Mais on a clairement besoin, parfois, de petites opérations mathématiques pour gérer de grandes quantités.
d'ou l'utilité de faire des variantes. Comme pour le fizzbuzz.
Ben oui, et ça permet d'éliminer les gnous. Il en sort beaucoup avec un gros diplôme, des gnous. Ca n'a pas vocation à détecter le nouveau John Carmack. Ca a vocation à éliminer ceux qui ne sont même pas capables de comprendre qu'il faut d'abord éliminer fizzbuzz. Ceux-là ne justifieront JAMAIS leur salaire.
Là, on est d'accord. Il est rarissime qu'un algo, même complexe, mette la machine à genoux(sauf si pour chaque division du fizzbuzz on invoque une dizaine de frameworks). Les entrées-sorties représentent 99% des soucis de performances auxquels j'ai été confronté.
Je fais du décisionnel et du marketing dans une banque de taille moyenne. Pour le marketing, j'ai eu à faire un algorithme particulièrement complexe. de complexité n4, si je me souviens bien.
Après, l'optimisation s'est faite par les bornes : (1) les appels référentiels ont déjà tous été faits, on travaille sur des données enrichies stockées en mémoire, et (2)on applique l'algorithme sur des ensembles petits, donc même avec 4 boucles imbriquées, ça dure 90 secondes sur 300 000 enregs.
A noter que l'enrichissement préalable, lui, dure 5 heures. Il en durait 6 avant la bufferisation.
"The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet."(a priori, une formule de Michael A. Jackson).
Mais il est parfois nécéssaire de faire des algos complexes, même si leur optimisation fine est rarement utile. Je VEUX que la personne qui bosse soit capable de pondre des algos complexes. Si il y a besoin de l'optimiser, on verra ensuite(et, on l'a vu, je préfère optimiser sur des trucs annexes et faciles. La bufferisation a pris une petite heure, avec un risque extrêmement faible, mémoriser la précédente clef d'appel au module d'enrichissement n'est pas une tache dantesque).
Je ne comprends pas. J'ai une spécification précise, un algorithme (presque)précisément décrit par la MOA à mettre en place - parcequ'il correspond à un besoin métier précis. En quoi le fait que sa mise en oeuvre soit complexe(j'en ai chié, même sans optimiser) a-t-il un impact sur le cout? Soit on le met en place, soit on ne sait pas cibler correctement les clients.
Après, l'utilité de l'optimisation est à voir, suivant les cas. J'ai d'abord cherché à faire un truc qui marche, puis à le rendre lisible, et quand ça a donné satisfaction, ça durait 90 secondes. Ce qui, pour un traitement mensuel, est négligeable(on est pas dans de l'embarqué). Mais, celà devait marcher, et il n'y avait pas de solution simple. Un programmeur qui n'est pas capable d'imbriquer des boucles finira toujours par être inutile.
Partager