Publicité
+ Répondre à la discussion
Page 7 sur 8 PremièrePremière ... 345678 DernièreDernière
Affichage des résultats 121 à 140 sur 142
  1. #121
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    ha oui tien,
    en ajoutant l'optimization des 1+1+....+1, et en evitant plusieur appèle récurssive, j'améliore nettement les perf
    je passe pour 100 de 30s à 5-6s
    Code C++ :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <ctime>
    #include <iterator>
     
    //#define AFFICHER
    int nbvalue(0);
    typedef unsigned int DecompType;
     
     
     
    inline void afficher(const std::vector<DecompType> & myVect,const DecompType & nb)
    {
        nbvalue++;
        #ifdef AFFICHER
    	if (nb==0) return;
        std::cout<<"[";
        std::copy(myVect.begin(),myVect.begin()+nb-1,std::ostream_iterator<int>(std::cout,", "));
        std::cout<<myVect[nb-1]<<"]\n";
        #endif
    }
     
    //fonction récussive
    inline void generate(std::vector<DecompType> & myVect,const DecompType & reste ,const  DecompType & nb_precedent,const DecompType & level)
    {
    if (reste ==1)
    	{
    	myVect[level]=1;
    	afficher(myVect,level+1);
    	}
    else
    	{
    	//on interdit que le chiffre que l'on va traiter puisse etre plus grand que le précédent
    		for (DecompType i=std::min(reste,nb_precedent);i>1 ;--i)
    		{
    		//on met le chii=ffre courant à i
    		myVect[level] = i;	    
    		//on traite le prochain chiffre avec le reste
    		//si reste ==i alors la somme des chiffres est bien ègale au chiffre de dépard
    		//sinon on passe au chiffre suivant
    		if (reste==i) 
    			afficher(myVect,level+1);
    		else
    			generate(myVect,reste-i,i,level+1);
    		}
    	//cas ou le nombre courant est mis à 1
    	//td::vector<int>::iterator it = myVect.begin()+level;
    	myVect[level]=1;
    	myVect[level+reste-1]=1;
    	afficher(myVect,level+reste);
    	}
     
    }
     
    int main()
    {
        clock_t t1=std::clock();
        DecompType n =100;
        std::vector<DecompType> myVect(n);
        DecompType level (0);
        generate(myVect,n,n,level);
        clock_t t2=std::clock();
        std::cout<<nbvalue<<std::endl;
        std::cout<<double(t2-t1)/CLOCKS_PER_SEC<<std::endl;
    return 0;
    }
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  2. #122
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    j'ai comparé avec le code de Steki-kun:
    pour 100
    moi : 0m1.656s
    Steki-kun: 0m2.304s

    pour 130 :
    moi : 0m56.012s
    Steki-kun: 1m3.160s
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  3. #123
    Membre confirmé Avatar de Steki-kun
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2005
    Messages : 222
    Points : 255
    Points
    255

    Par défaut

    Tu as pris ma version impérative compilée avec ocamlopt ?
    En tout cas c'est intéressant, la différence augmente en proportion bien plus faible que le nombre de partitions donc les complexités sont sensiblement les mêmes. J'aimerais bien voir d'où vient la différence si la technique est la même : tu as le code de ta version là ?
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  4. #124
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    Citation Envoyé par Steki-kun Voir le message
    Tu as pris ma version impérative compilée avec ocamlopt ?
    En tout cas c'est intéressant, la différence augmente en proportion bien plus faible que le nombre de partitions donc les complexités sont sensiblement les mêmes. J'aimerais bien voir d'où vient la différence si la technique est la même : tu as le code de ta version là ?
    oui sous ubuntu. Par contre je ne sait pas si il faut ajouter des option a la compilation. je ne connait pas ocamlopt
    Pour le code je l'ai mis juste avant.
    [edit]
    les résultats ne sont pas les même car ce n'est pas le même PC.
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  5. #125
    Membre confirmé Avatar de Steki-kun
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2005
    Messages : 222
    Points : 255
    Points
    255

    Par défaut

    OK ! Pour les options, rien à rajouter à ocamlopt -unsafe à la limite ca accélerera un chouia les acces tableaux...
    Edit : Je viens de changer un chouia en remplaçant comme JMB le paquet de 1 dans l'implémentation impérative par leur nombre, je descends à 53s pour n=130, 2.1s pour n=100. A ce niveau là, time ne permet plus de faire la comparaison raisonnablement, je crois qu'on peut dire ex aequo

    Les boucles à changer :
    Code :
    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
    let visit a m q = 
      sol := add !sol one;
      let e = if m = q then q-1 else q in
        for i = 1 to e do
          Printf.printf "%d+" a.(i)
        done;
        if m = q then 
          print_endline (string_of_int a.(q))
        else
          (for i = 1 to m-q-1 do
    	 Printf.printf "1+"
           done;
           print_endline "1")
    
    let rec copy_loop a n m x =
      if n <= x then n, m
      else 
        (a.(m) <- x;
         copy_loop a (n-x) (m+1) x)
    
    let rec main_loop a n m q =
      if !debug then visit a m q;
      if a.(q) = 2 then
        main_loop a n (m+1) (q-1)
      else
        if q = 0 then ()
        else
          begin
    	let x = a.(q) - 1 in
    	  a.(q) <- x;
    	  let n,m = copy_loop a (m-q+1) (q+1) x in
    	    a.(m) <- n;
    	    main_loop a n m (if n = 1 then m-1 else m)
          end
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  6. #126
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    j'ai réussi a diviser par 2.5/3 le temps

    Code C++ :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <ctime>
    #include <iterator>
     
    //#define AFFICHER
    int nbvalue(0);
    typedef int DecompType;
     
    inline void afficher(const std::vector<DecompType> & myVect,const DecompType   & end)
    {
        nbvalue++;
     
        #ifdef AFFICHER
     
        std::cout<<"[";
        std::copy(myVect.begin(),myVect.begin()+end,std::ostream_iterator<int>(std::cout,", "));
        std::cout<<*(myVect.begin()+end)<<"]\n";
        #endif
    }
     
    template <DecompType debut >
    struct myFOR;
     
     
    //class template qui empêche que le chiffre courant soit suppèrieur au chiffre d'avant
    //et lance une boucle for pour décrementer le chiffre
    //traite le cas chiffre == 1
    template <DecompType reste >
    struct generate2
    {
        template<DecompType nb_precedent>
        static inline void faire(std::vector<DecompType> &myVect,const DecompType &   level)
            {
            //std::cout<<"generate2"<<std::endl;
            myFOR< reste<nb_precedent? reste:nb_precedent >::template faire<reste> (myVect,level);
            myVect[level]=1;
     
            myVect[level+reste-1]=1;
            afficher(myVect,level+reste-1);
            }
     
     
    };
    //SPECIALISATION
    // si  le reste vaut 0 on affiche le résultat
    template < >
    struct generate2<0>
        {
     
        template<DecompType nb_precedent>
        static inline void faire(std::vector<DecompType> &myVect,const DecompType  &  level)
            {
           //    std::cout<<"generate2<1>"<<std::endl;
            myVect[level]=1;
            afficher(myVect,level+1);
            }
        };
    //BOUCLE FOR "déroulé"
    //decremente le nombre courant et demande une generation pour le chiffre suivant
    // ou affiche quand le rest vaut 0
    template <DecompType Valeur >
    struct myFOR
    {
        template<DecompType    reste>
        static inline void faire(std::vector<DecompType> &myVect,const DecompType & level)
        {
            myVect[level] = Valeur;
            if (reste==Valeur)
                afficher(myVect,level);
            else
               generate2<reste-Valeur>::template faire<Valeur>(myVect,level+1);
     
     
            myFOR<Valeur-1>::template faire<reste>(myVect,level);
     
        };
     
    };
    //SPECIALISATION
    //quand Valeur vaut 1 la boucle est fini
    template < >
    struct myFOR<1>
    {
     template<DecompType    reste>
        static inline void faire(std::vector<DecompType> &myVect,const DecompType   & level)
        {
        };
    };
     
     
    int main(int argc,char ** argv)
    {
        const DecompType n =100;
        std::vector<DecompType> myVect(n);
        myVect[0]=n;
        nbvalue=0;
        clock_t t1=std::clock();
            generate2<n>::faire<n>(myVect,0);
        clock_t t2=std::clock();
        std::cout<<nbvalue<<std::endl;
        std::cout<<double(t2-t1)/CLOCKS_PER_SEC<<std::endl;
     
    return 0;
    }
    Mais bon c'est à cout de déroulement de boucle (pseudo metaprog, je ne mis connait pas encore assez, c'est mon premier)... La je suis obligé de connaitre le nombre avant le lancement...
    Mais cette méthode peut accélérer un morceau du calcul. Par exemple des qu'il reste 50, j'appel ce nouveau code
    Je ne sait pas si d'autre langages permettent de faire ca..
    surtout en fonctionnel
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  7. #127
    Membre confirmé Avatar de Steki-kun
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2005
    Messages : 222
    Points : 255
    Points
    255

    Par défaut

    euh STOP je t'arrête là, avec les mêmes techniques je calcule la factorielle en O(1)... Là tu fais faire les calculs à ton compilo à la place de ton programme, alors évidemment il reste plus grand chose à faire en runtime. C'est pas le but de l'exercice
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  8. #128
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    Citation Envoyé par Steki-kun Voir le message
    euh STOP je t'arrête là, avec les mêmes techniques je calcule la factorielle en O(1)... Là tu fais faire les calculs à ton compilo à la place de ton programme, alors évidemment il reste plus grand chose à faire en runtime. C'est pas le but de l'exercice
    Oui et non il donne et peut afficher toute les solution!!!
    Citation Envoyé par millie
    Les règles

    Il n'y a pas de règle particulière (évidemment, il faut que la solution proposée fonctionne). Vous pouvez proposer des solutions aussi bien dans des langages fonctionnels (caml, haskell, scheme, lisp...) qu'impératif. Le public pourra ainsi juger du code suivant divers critères :

    * la maintenabilité
    * la simplicité
    * le fait qu'il soit optimisé
    maintenabilité = bof
    simplicité = bof
    optimisé = beaucoup

    Ici la boucle for et les appelles récursive sont déroulé.
    Il reste donc le plus couteux : l'accès en mémoire!!!
    Le but est juste de montrer ce que l'on peut faire en C++
    En faite, je me demande surtout si c'est possible de faire ça en langage fonctionnelle.

    Mais je suis d'accord que ce code n'apporte rien a part l'optimisation
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  9. #129
    LLB
    LLB est déconnecté
    Membre Expert
    Inscrit en
    mars 2002
    Messages
    962
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 962
    Points : 1 127
    Points
    1 127

    Par défaut

    Citation Envoyé par Mongaulois Voir le message
    En faite, je me demande surtout si c'est possible de faire ça en langage fonctionnelle.
    Le système de templates de C++ est un langage fonctionnel (et turing-complet).

    Common Lisp possède un système de macros puissants, il est peut-être possible de faire ça aussi, à la compilation.

  10. #130
    Membre confirmé Avatar de Steki-kun
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2005
    Messages : 222
    Points : 255
    Points
    255

    Par défaut

    Reste que l'utilisation de trucs de ce genre ne relève pas vraiment d'une opposition de style impératif / fonctionnel. C'est assez rarement un bon design de programmation puisque ça ne marche pas pour tout n et que l'air de rien ca fait méchamment grossir l'exécutable.
    Et au risque d'être cynique, je dirais que si vraiment on veut dérouler des piles de 500 appels sans le faire "à la main", quel que soit le langage, on peut toujours étant donné un programme P qui fait un nombre constant de boucles et d'appels récursifs, faire un programme qui va écrire sur la sortie standard une version entièrement déroulée du programme P... Que le compilateur t'offre la possibilité de le faire pour toi -- moyennant incantations templatisantes de ton code original, c'est un autre problème
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  11. #131
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    Citation Envoyé par Steki-kun Voir le message
    Reste que l'utilisation de trucs de ce genre ne relève pas vraiment d'une opposition de style impératif / fonctionnel. C'est assez rarement un bon design de programmation puisque ça ne marche pas pour tout n et que l'air de rien ca fait méchamment grossir l'exécutable.
    C'est un style de programmation a part entière que te permet le C++. Aprés il ne faut pas en abuser c'est sur. La c'est un gros abut de ma part, j'avoue. Mais je pourrai m'en servire pour optimiser qu'une partie du code. Par exemple des qu'un chiffre est à 5.
    Citation Envoyé par Steki-kun Voir le message
    Et au risque d'être cynique, je dirais que si vraiment on veut dérouler des piles de 500 appels sans le faire "à la main", quel que soit le langage, on peut toujours étant donné un programme P qui fait un nombre constant de boucles et d'appels récursifs, faire un programme qui va écrire sur la sortie standard une version entièrement déroulée du programme P... Que le compilateur t'offre la possibilité de le faire pour toi -- moyennant incantations templatisantes de ton code original, c'est un autre problème
    Bien sur, mais je ne me voit pas dérouler a la main les 190 569 292 solutions. Qu'un language le permet, ajouter beaucoup d'interet.
    Dans un code, il y as trés souvent des morceaux où les variables sont connu. Mais le compilot ne va pas spécialement dérouler les boucle.... mais avec ce style de programmation tu peut l'obliger. Dans le même style dans ce code :
    Code C++ :
    1
    2
    3
    myTab tabres,tab1,tab2,tab3;//tableau avec N element
    ....//init de tab1,tab2 et tab3
    tabres = tab1+tab2*tab3
    avec ce même style de programmation, on peut obliger le compilot a le traduire par :
    Code C++ :
    1
    2
    3
    4
    5
    6
     
    tabres.resize(Tabtmp2.res());
    for (int i=0;i<tab1.res();++i)
    {
    tabres[i]  = tab1[i] + tab2[i] * tab3[i];
    }
    au lieu de

    Code C++ :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    //multiplication
    myTab Tabtmp1(tab2.size());
    for (int i=0;i<Tabtmp1.res();++i)
    {
    Tabtmp1[i]  = tab2[i] * tab3[i];
    }
    //addition
    myTab Tabtmp2(Tabtmp1.size());
    for (int i=0;i<Tabtmp2.res();++i)
    {
    Tabtmp2[i]  = tab1[i] + Tabtmp1[i];
    }
    //egale
    tabres.resize(Tabtmp2.res());
    for (int i=0;i<Tabres.res();++i)
    {
    tabres[i]  =  Tabtmp2[i];
    }
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  12. #132
    Inactif
    Inscrit en
    juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : juillet 2005
    Messages : 1 958
    Points : 2 148
    Points
    2 148

    Par défaut

    Citation Envoyé par LLB Voir le message
    [...]
    Common Lisp possède un système de macros puissants, il est peut-être possible de faire ça aussi, à la compilation.
    C'est possible. Les macros récursives existent.
    Mais c'est très peu recommandé d'en abuser.

    Sérieusement mongaulois, il va falloir faire un effort sur l'orthographe

    Vis-à-vis des tes optimisations, sais-tu que les performances sont rarement un problème sur des projets ? Et qu'il vaut mieux investir dans une bonne conception et une bonne documentation que dans une bonne performance ? Il me semble que tu n'as fait ça que pour le challenge cependant. Ce qui est fort bien dans ce cas. Mais la lisibilité est très basse aussi.

  13. #133
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 104
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 104
    Points : 5 985
    Points
    5 985

    Par défaut

    Citation Envoyé par Garulfo Voir le message
    C'est possible. Les macros récursives existent.
    Mais c'est très peu recommandé d'en abuser.
    L'abus serait moins grand que l'abus des templates...

    Et si on veut citer d'autres langages complets a la compilation, il y a aussi au moins Forth, PL/I, la plupart des macro-assembleurs. Meme les macros du C peuvent etre poussee a bout pour faire bien plus que ce que croient la plupart des gens (voir par exemple la section de boost sur le preprocesseur).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  14. #134
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    Pour ce que ca interesse:
    un petit bench sur un problème entre différents language
    http://www.ffconsultancy.com/ocaml/r...languages.html
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

  15. #135
    Rédacteur/Modérateur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    6 939
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : juin 2006
    Messages : 6 939
    Points : 8 757
    Points
    8 757

    Par défaut

    Citation Envoyé par Mongaulois Voir le message
    Pour ce que ca interesse:
    un petit bench sur un problème entre différents language
    http://www.ffconsultancy.com/ocaml/r...languages.html
    En même temps, les mini bench, ça montre tout et surtout n'importe quoi
    Je ne répondrai à aucune question technique en privé

  16. #136
    Expert Confirmé Sénior
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 164
    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 164
    Points : 7 656
    Points
    7 656

    Par défaut

    Citation Envoyé par Mongaulois Voir le message
    Pour ce que ca interesse:
    un petit bench sur un problème entre différents language
    http://www.ffconsultancy.com/ocaml/r...languages.html
    D'un autre côté ce n'est pas non plus vraiment un "mini"-bench, c'est un moyen.

    Comparaison avec Haskell :
    http://augustss.blogspot.com/2007/11...askell-vs.html

    --
    Jedaï

  17. #137
    Inactif
    Inscrit en
    juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : juillet 2005
    Messages : 1 958
    Points : 2 148
    Points
    2 148

    Par défaut

    Citation Envoyé par millie Voir le message
    En même temps, les mini bench, ça montre tout et surtout n'importe quoi
    C'est un très bon exemple.
    Ce code montre qu'on peut avoir élégance et efficacité avec un programme qui a besoin d'efficacité (c'est un ray tracer). Et l'exemple qui suit en Haskell (cf. le message de Jedai) montre que ocaml n'est pas le seul dans ce cas.

    Je l'ai déjà posté. Flying Frog Consultancy utilise ocaml pour du calcul scientifique.

  18. #138
    Rédacteur/Modérateur

    Avatar de millie
    Profil pro
    Inscrit en
    juin 2006
    Messages
    6 939
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : juin 2006
    Messages : 6 939
    Points : 8 757
    Points
    8 757

    Par défaut

    C'est un exemple sur un petit code... Je ne sais pas si ça vaut grand chose.

    Par exemple, Java va forcement avoir de mauvais statistiques car Hot Spot ne va pas être vraiment utilisé puisque l'exécution est courte donc le résultat est forcement biaisé Et dans l'industrie, je ne suis pas sûr que des applications aussi courtes courent les rues.

    Si ce code était intégré à une vrai application et qu'il y aurait des milliers d'appels alors Hot Spot optimiserait/compilerait en natif le code donc les statistiques ne seraient plus les mêmes.
    Je ne répondrai à aucune question technique en privé

  19. #139
    Expert Confirmé Sénior

    Inscrit en
    novembre 2005
    Messages
    5 104
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 5 104
    Points : 5 985
    Points
    5 985

    Par défaut

    Citation Envoyé par Jedai Voir le message
    D'un autre côté ce n'est pas non plus vraiment un "mini"-bench, c'est un moyen.
    200 lignes pour l'entrée la plus longue, moyen? C'est pas un mini-bench, c'est micro-bench.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  20. #140
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro yan verdavaine
    Ingénieur expert
    Inscrit en
    mars 2004
    Messages
    9 956
    Détails du profil
    Informations personnelles :
    Nom : Homme yan verdavaine
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2004
    Messages : 9 956
    Points : 12 412
    Points
    12 412

    Par défaut

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    200 lignes pour l'entrée la plus longue, moyen? C'est pas un mini-bench, c'est micro-bench.
    Alors as tu un vrai bench??

    Pour moi un bench entre languagene peut montrer que la relation verbosité-rapidité d'un language par rapport à un problème. Et c'est en ca que le lien que je donne me semble un bon bench. Tous comme les codes créé dans ce thread

    Je pense que pour l'instant,
    il y as toujours une solution plus rapide en C et C++,mais souvent avec un code plus verbeux, car ces compilateur est plus evolué,optimisé. Mais d'autre language seront toujours plus adapté à un problème donné, avec un code plus lissible et de trés bonne performance.
    Développeur Windows 8, Windows phone 8 et Nokia Asha, inscrivez vous sur DVLUP

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •