IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Haskell Discussion :

Mise en cache systématique des résultats ?


Sujet :

Haskell

  1. #1
    Membre averti
    Avatar de Chatanga
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 211
    Points : 346
    Points
    346
    Par défaut Mise en cache systématique des résultats ?
    Bonjour,

    Voici une petite question sur la capacité d'optimisation élémentaire du code par Haskell.

    La fonction areInsidePolygon suivante fait appel à une fonction isInsidePolygon qui découpe son polygone d'entrée en sous-polygones convexes et teste la présence d'un point donné dans chacun d'entre eux. Ce découpage est une opération couteuse qui est réalisée pour chacun des points de la liste sur laquelle itère la fonction map.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    areInsidePolygon :: Polygon -> [Point] -> Bool
    areInsidePolygon polygon points = and $ map (isInsidePolygon polygon) points
    Grâce à la transparence référentielle, le compilateur ne doit avoir aucun mal à optimiser tout ça, c'est à dire ne réaliser le découpage qu'une seule fois et de garder en mémoire la liste de sous-polygones convexes. Peut-être même que cette optimisation se produit à l'exécution et non à la compilation. Qu'en est-il réellement ? Mon but n'est pas tant de gagner des millisecondes mais de savoir si ça a un sens de récrire un tel code dans un but d'optimisation ou bien si on peut se reposer sur Haskell.

    Ajout : et est-ce que ça changerait quelque chose de l'écrire comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    areInsidePolygon :: Polygon -> [Point] -> Bool
    areInsidePolygon polygon = and $ map (isInsidePolygon polygon)

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Je ne sais pas pour ta premiere question mais concernant ta simplification ça marche.
    http://learnyouahaskell.com/higher-o...unctions#folds
    C'est mentionné dans la solution de sum'.
    Salut.

    EDIT: oups j'avais pas vu la date...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 309
    Points : 928
    Points
    928
    Par défaut
    Haskell ne fait pas de mémoization automatique. Néanmoins, si tu as "bien" écrit isInsidePolygon, ça va marcher. Par là j'entends : l'application de isInsidePolygon à un polygon calcule le découpage, puis retourne une fonction qui à un point associe un booléen. Dans ce cas, le découpage ne sera effectivement effectué qu'une seule fois dans areInside.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PERL] NET::LDAP : Mise en cache des requêtes
    Par ricomervin dans le forum Modules
    Réponses: 1
    Dernier message: 17/04/2007, 10h36
  2. [Dates] Mise en cache des pages
    Par Alex67 dans le forum Langage
    Réponses: 2
    Dernier message: 27/03/2007, 12h42
  3. Mise en cache des résultats SQL Server
    Par Ultiny dans le forum Accès aux données
    Réponses: 1
    Dernier message: 17/02/2007, 12h11
  4. mise en cache des result set de grosses requêtes
    Par gaboo_bl dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 16/01/2007, 13h02
  5. Empêcher la mise en cache des images
    Par oranoutan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 15/02/2006, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo