Envoyé par
cmcmc
? Par pipeline, j'entendais bien une construction de type
1 2 3 4
| @b = grep { ... } # troisième étage
map { ... } # deuxième étage
map { ... } # premier étage
@a; |
Sauf erreur, l'algo d'analyse est récursif, par en pipeline, du type
@b = map { map { } @... } @...
Je pensais bien à ce critère. En fait, je pars du principe qu'il faut d'abord un code clair et que les considérations de performances doivent être prises en compte seulement si elles deviennent nécessaires, car elles signifient trop souvent "optimisation" et :
- diminution de la lisibilité/maintenabilité
- recherche d'optimisation longue et potentiellement, qui peut conduire à une perte de portabilité
- ...
Je considère que, perl disposant de paradigmes de programmation avancés tel que les pipeline et les opérateurs de liste, il est déjà optimisé pour ce genre de traitements.
Par ailleurs, si tu prends comme critère les performances, il faut à la fois regarder les aspects de temps d'exécution, et les aspects de consommation mémoire (je ne juge pas ce cas précis, je parle "en général").
Bref, je regarde rarement les problèmes de performance quand j'écris mon algorithme, sauf s'il est évident à la vue de l'énoncé qu'ils entrerons en ligne de compte assez rapidement (comme devoir traiter des fichiers de séquences ADN de plusieurs milliards de nucléotides, ou des dictionnaires de mots de plusieurs millions de lignes, le tout avec une combinatoire importante ; deux exemples que je traite encore et qui m'obligent à prendre en compte les aspects de consommation mémoire ET de temps CPU pendant la conception algorithmique).
Ceci n'est pas pour dire que tu fais cas trop rapidement de ce critère, mais pour donner mon point de vue à ce sujet.
Partager