Par exemple, une opération qui traite chaque pixel l'un après l'autre, ce dont tu parles, si c'est entièrement codé comme une boucle de programmation, c'est dur à réduire (car un programme ne "comprend" pas son propre code!). Par contre, on devrait être capable de faire une sous-classe d'opération pour les opérations "pareil sur tous les pixels"
On en est déjà capable ! C'est assez facile dans certains langages, et intégré dans d'autres. Typiquement tu cherches une fonction map : (Pixel -> Pixel) -> (Image -> Image), et la représenter sous forme d'une variable concrète v = Map (traite_pixel) avec une fonction applique_map qui permet d'exécuter cette commande.
Ensuite, sous réserve d'absence d'effets de bord1, tu peux affirmer que:
map f . map g = map (f . g)
Ce qui évite de construire des structures intermédiaires pour le calcul. De manière plus concrète, c'est simplement faire une réduction du graphe avant de lancer le traitement (puisque toutes les actions sont déjà sous forme de nœud dans un graphe, l'étape « représentation » serait simplement l'ajout d'une indication du type : « sujet à fusion »)
[1] : Ce qui peut être vraiment restrictif sur les fonctions qui peuvent bénéficier de cette optimisation ...
[^] # Re: perf ?
Posté par Aluminium95 . En réponse à la dépêche GEGL 0.3.0 et babl 0.1.12 sont de sortie. Évalué à 4.
On en est déjà capable ! C'est assez facile dans certains langages, et intégré dans d'autres. Typiquement tu cherches une fonction
map : (Pixel -> Pixel) -> (Image -> Image), et la représenter sous forme d'une variable concrètev = Map (traite_pixel)avec une fonctionapplique_mapqui permet d'exécuter cette commande.Ensuite, sous réserve d'absence d'effets de bord1, tu peux affirmer que:
Ce qui évite de construire des structures intermédiaires pour le calcul. De manière plus concrète, c'est simplement faire une réduction du graphe avant de lancer le traitement (puisque toutes les actions sont déjà sous forme de nœud dans un graphe, l'étape « représentation » serait simplement l'ajout d'une indication du type : « sujet à fusion »)
[1] : Ce qui peut être vraiment restrictif sur les fonctions qui peuvent bénéficier de cette optimisation ...