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

Caml Discussion :

Vitesse en compilé et en interprété


Sujet :

Caml

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Vitesse en compilé et en interprété
    Bonjour

    Je suis tout nouveau ici, alors je me présente rapidement, je suis éléve en prépa et je fait pas mal d'informatique dans ce carde.

    Je voudrai savoir si avec code compilé en Ocaml on peut esperer un gros gain de vitesse par raport a un code interpréter.

    En vous remerciant par avance

    Bonne journée

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    On peut en espérer un gain énorme dans la plupart des cas.

    --
    Jedaï

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Tu aurai une idée de a peu pres combien (en moyenne) ou un article sur cela ??

    Bonne journée

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Tout dépend de l'application, par exemple sur mon calcul de PI par spigot (voir le sujet "Page code source, mettez vos sources ici !") le gain est clairement x1 car tout le temps de calcul est passé dans les fonctions Big_int lesquelles sont déjà compilées.

    Le gain est quelque part entre x1 pour des fonctions précompilées et environ x15 pour des calculs intensifs avec très peu d'allocations de mémoire.

    Voici un exemple de calcul ou le gain est environ x15 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    let pyramid p x =
      let n = p*(p+1) / 2 + x in
      let rec helper a b c q l m =
        if q <= p then
          let d = ref 0 and u = ref 0 and v = ref 0
          and i = ref 0 and j = ref 0 in
          for r = l+1 to n do
            d := a.(r); i := l; j := l-q+1;
            while b.(!d) > l && !i < m do
              incr i; incr j; d := abs (!d - a.(!j));
            done;
            if !i = m then begin
              d := a.(r); i := l; j := l-q+1;
              while b.(!d) > !i && !i < m do
                incr i;
                v := a.(!i); u := b.(!d); c.(!i) <- !v;
                a.(!i) <- !d; a.(!u) <- !v;
                b.(!d) <- !i; b.(!v) <- !u;
                incr j; d := abs (!d - a.(!j));
              done;
              if !i = m then helper a b c (q+1) m (m+q+1);
              while !i > l do
                v := a.(!i); d := c.(!i); u := b.(!d);
                a.(!i) <- !d; a.(!u) <- !v;
                b.(!d) <- !i; b.(!v) <- !u;
                decr i;
              done;
            end;
          done;
        else begin
          for i = 1 to p do
            print_int a.((i*i-i+2)/2); print_char ' ';
          done;
          print_newline ();
        end;
      in
      let a = Array.init (n+1) (fun i->i)
      and b = Array.init (n+1) (fun i->i)
      and c = Array.make (n+1) 0
      in  helper a b c 1 0 1;;
     
    let main () =
      let p = print_string  "How many levels? "; read_int () in
      let x = print_string  "How many extras? "; read_int () in
      assert (p >= 1);
      assert (x >= 0);
      pyramid p x;;
     
    if !Sys.interactive then ()
    else main ();;
    Compilez avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ocamlopt -unsafe -o Kheopful.exe Kheopful.ml
    Exécutez et entrez 8 puis à nouveau 8.
    En interactif évaluez (mais il faut être plus patient):
    Le résultat affiché est la base de cette pyramide où chaque pierre contient la différence entre les deux pierres sur lesquelles elle repose:

    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup

    Bonne journée

  6. #6
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Pense à cliquer sur le bouton résolu quand tu es satisfait des réponses. Et bonne compilation

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

Discussions similaires

  1. Interpréter un source Java, sans le compiler
    Par onlytoine dans le forum Général Java
    Réponses: 9
    Dernier message: 03/09/2009, 17h47
  2. Accroître la vitesse de compilation.
    Par grunt2000 dans le forum Windows XP
    Réponses: 4
    Dernier message: 19/05/2009, 15h38
  3. [BP7] Vitesse d'exécution des programmes compilés Pascal
    Par Transgarp dans le forum Turbo Pascal
    Réponses: 27
    Dernier message: 08/04/2008, 22h09
  4. Mode interprété / compilé
    Par fdejaigher dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 15/10/2007, 17h11
  5. Vitesse de compilation
    Par srvremi dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/07/2002, 17h49

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