Ce qui est vraiment plus performant? Haskell ou OCaml

J'ai passé les 18 derniers mois, à rendre la poignée de la programmation fonctionnelle, en commençant par l'apprentissage et OCaml depuis quelques semaines maintenant Haskell. Maintenant, je veux passer à l'étape suivante et de mettre en œuvre une réelle demande: Un simple temps réel à l'éditeur de terrain. J'ai écrit de nombreux temps réel le terrain des moteurs de rendu, donc c'est un sujet courant. Et le récursive algorithmes et structures de données semblent très en forme pour une fonctionnelle de la mise en œuvre.

Avec ce cours en temps réel de l'application bien sûr, je suis à la recherche pour les meilleures performances que je peux obtenir. Maintenant, certains (à mon humble avis assez ennuyeux) promoteur de OCaml, très souvent, les chiennes contre Haskell être lent par rapport à OCaml ou F#. Mais selon le La Langue De L'Ordinateur De Repères De Jeu Haskell souvent beats OCaml, si seulement plutôt par petites fractions — il reste encore le problème, que ce test ne prend que très spécifique des échantillons.

La bonne chose à faire serait bien sûr de mettre en œuvre le programme dans les deux langues et de comparer ensuite, mais je ne veux tout simplement pas faire un double travail.

Mais peut-être que d'autres personnes ne comparables applications en OCaml et Haskell et de donner quelques chiffres?

  • J'oserais dire que le SÈCHE principe s'applique à de plus petits "niveaux de granularité" de l'ensemble de l'application; il aurait plus de sens à la méthode ou le niveau de la classe. Je suis d'accord avec l'OP, que vous ne pouvez comparer directement les deux langues et les plates-formes lorsque les deux sont essentiellement de faire exactement la même chose-mais bien sûr, cela est plutôt une façon extrême de trouver et pas très pratique dans la plupart des cas.
  • L'écriture de deux programmes équivalents de comparer leurs caractéristiques de performance n'a rien à voir avec le principe de la SEC. SEC, c'est avoir un canoniques source d'une information, pas beaucoup de sources indépendantes. Dans ce cas, ni le programme en lui-même contient les informations nécessaires, de sorte à SEC n'entrerait en jeu si vous l'avais déjà écrit la comparaison et ont examiné l'écrire de nouveau pour une mystérieuse raison. Deux est le nombre minimal de programmes nécessaires pour une comparaison, donc je ne vois pas ce que cela peut être brut "inefficace" en comparaison.
  • ok vous sont effectivement à droite (supprimé mon premier commentaire, pour éviter les confusions), Peut-être que ça les fais appliquer, je serais parti avec ne repet vous-même et non avec le dont repet vous-même principe 🙂 je ne sais pas, mais si c'est un très petit morceau de logiciel, il n'a pas de sens pour moi de construire deux fois, je voulais juste le signaler.
  • Qu'entendez-vous par "en temps réel"? En fonction de votre réponse, Haskell peut ne pas être bien adapté pour votre tâche. (Et peut-être pas OCaml soit.)
  • "en temps réel", comme dans: Tesselated élévation de la grille avec un nombre illimité (enfin, uniquement limité par la mémoire), les niveaux de détail, de manière interactive modifiable avec réponse immédiate, c'est à dire du taux d'actualisation devrait être >30Hz. BTDT à l'aide de C. Penser le long des lignes de ce que les simulateurs de vol à faire pour rendre le terrain.
  • La langue des repères de jeu a fait l'objet d'une certaine controverse sur la OCaml liste de diffusion récemment certaines règles semblent affecter OCaml plus que d'autres. Par exemple OCaml arbre binaire code s'exécute dans 47. En OCaml arbre de code trouvé dans la "alternative intéressante" article court dans 12.67 s qui le mettrait à la deuxième place derrière C. Le code alt airs le garbage collector, qui je pense va à l'encontre des règles de l'arbre binaire code. Je ne peux pas vraiment commenter si Haskell est plus rapide que OCaml ou pas, mais une partie du code utilisé pour les tests sont sous-optimales.
  • Bizarre que j'ai (et je suis sûr que pas mal d'autres personnes) de savoir de qui vous parlez. De toute façon, inb4 certains radotage sur hashmaps et la fonction floor en Haskell, et une déclaration que l'ensemble de la langue est inutile à cause de cela.
  • Yoshiuchi, l'arbre binaire de référence affecte Haskell assez mal depuis trop paresseux arbre n'est pas autorisé.
  • Yoshiuchi >> Par exemple OCaml arbre binaire code s'exécute dans 47. En OCaml arbre de code trouvé dans la "alternative intéressante" article court dans 12.67 s << Vous semblez ignorer l'OCaml arbre binaire de code qui s'exécute dans 15 ans? shootout.alioth.debian.org/u32q/...
  • Je n'ai pas l'ignorer, je n'en étais pas consciente. Je ne suis pas en train de redémarrer la controverse sur la liste de diffusion, je suis contente de souligner qu'il existe des règles pour les points de référence auxquels ne s'applique pas nécessairement à un éditeur de terrain.
  • Yoshiuchi - Désolé, mais ce que vous avez écrit n'est pas de savoir si les critères de référence des règles du jeu s'appliquent à un éditeur de terrain. Ce que vous avez écrit était sur OCaml et les repères de jeu.
  • Si vous voulez étudier la fusillade alors assurez-vous de lire le code source. Vous pouvez également trouver le Haskell pages wiki à ce sujet intéressant: haskell.org/haskellwiki/Great_language_shootout
  • Le principal point d'intérêt est sûrement qu'OCaml augmentation de la GC engage des pauses de 10 ms en moyenne, jusqu'à 30ms max (pour bien comportés code) alors que GHC du cessez-le-monde GC engage arbitrairement longues pauses. Étonnamment, personne d'autre ne l'a mentionné, sauf moi, et j'ai eu 3 downvotes pour mes ennuis...

InformationsquelleAutor datenwolf | 2010-11-29