2009-10-06 6 views
2

Je pense qu'au fur et à mesure que la programmation se déplace vers le web avec des outils et des techniques similaires et variés, est-ce que quelqu'un a trouvé un bon ensemble de benchmarks pour un langage de programmation? Je pense que les langages côté serveur, comme Java, PHP, ASP.net et C# sont les plus importants. Bien que cela puisse être quelque chose comme C ou perl, je ne veux pas y aller parce que ce n'est pas courant ou même rapide. Lorsque j'achète une nouvelle CPU, je peux faire un benchmark des nombres à virgule flottante, nombre entier et multi-tâches. Je peux bancer des choses comme les temps de rendu.benchmarks de langage de programmation Web?

Je pense que quelqu'un pourrait développer un banc standard pour des tâches de programmation simples, et des scénarios pratiques de serveur web. De préférence une organisation indépendante. Bien sûr, vous pouvez toujours modifier le code pour la performance, mais je parle de choses simples qui peuvent être faites de manière identique dans toutes les langues. Je parie que ça pourrait être robuste aussi.

À un certain point pour l'évolutivité, les performances seront un problème pour les langages Web. Je voudrais avoir un moyen de dire si une langue, ou mieux encore, la dernière version de celle-ci, se compare à la concurrence.

Tout le monde le fait déjà, ou devrais-je créer ma propre entreprise?

EDIT: oui Je sais que les benchmarks sont subjectifs, encore plus pour les pages web. Je n'ai pas dit que ce serait facile, ou même nécessaire maintenant .. Évaluer clairement ma carte vidéo sur Crysis par rapport à Far Cry est subjective, mais c'est un test du monde réel utile. C'est ce que je vise, et pour les langues dominantes. Pourrions-nous voir une résurgence de C si la performance devient un point d'intérêt sur la route?

+3

En tant que nitpick mineur, C est le plus rapide de ces langages, mais n'est pas particulièrement bien adapté au développement web. –

+1

@Dean J: assembleur pourrait être encore plus rapide :) – voyager

+1

En fait, l'analyse comparative d'un élément matériel comme une carte vidéo est beaucoup plus objective que l'analyse comparative d'un langage de programmation, car vous avez des mesures spécifiques (nombre de polygones par seconde, fréquence d'images, etc.) qui peut être appliqué directement à l'expérience de jeu. Ce n'est pas le cas avec les langages de programmation, qui renverront des résultats différents pour une myriade de tâches différentes. –

Répondre

0

Faites-vous référence à la vitesse de calcul ou à la productivité de programmation? Ou peut-être autre chose? Mis à part la vitesse de calcul du nombre réel, la qualité de la langue est hautement subjective, et certains avancent que la productivité de la programmation est plus importante que la vitesse de calcul.

En outre, alors que de nombreuses langues ont des caractéristiques communes, chaque langue a des objectifs spécifiques. Ce serait comme comparer des pommes à des oranges.

2

Il y a some benchmarksout therecomparing a lotof server side languages.

I've always apprécié les fractales, et était curieux si les langages de script étaient à la hauteur de la tâche. J'ai écrit un générateur de sets Mandelbrot très simple pour mon test. Plutôt que d'optimiser pour chaque langue, j'ai essayé d'écrire chaque programme de la même manière dans chaque langue pour faire une comparaison de performance raisonnable.

Voici les résultats de course sur mon 867 mhz Powerbook G4. Shorter est meilleur. S'il vous plaît noter, les repères suivants ne sont pas scientifiques, et ont été simplement fait pour satisfaire ma curiosité. Votre kilométrage peut varier.

N'hésitez pas à m'envoyer des ports vers d'autres langues. Le programme devrait imprimer le temps en secondes qui s'est écoulé en bas sous la forme de 'Elapsed% 0.2f'. Si vous pouvez, inclure des instructions pour la construction sur Mac OS X.

Language    Time Relative Speed 
C gcc-4.0.1    0.05 seconds  1.00 x 
ocaml compiled 3.09.2 0.05 seconds  1.00 x 
SBCL 1.0.2    0.13 seconds  2.55 x 
Java 1.4.2    0.40 seconds  8.00 x 
Io 20070410 Vector  1.40 seconds  28.09 x 
Lua 5.1     1.50 seconds  30.00 x 
ocaml bytecode 3.09.2 3.76 seconds  75.15 x 
Python 2.5.1   9.99 seconds  199.80 x 
Ghostscript 8.51  11.66 seconds  233.12 x 
Perl 5.8.6 Optimized 12.37 seconds  247.34 x 
TCL 8.4 Optimized  16.00 seconds  320.00 x 
Perl 5.8.6    21.75 seconds  435.00 x 
PHP 5.1.4    23.12 seconds  462.40 x 
Javascript SpiderMonkey v1.6 31.06 seconds  621.27 x 
Ruby 1.8.4    34.31 seconds  686.18 x 
Emacs Lisp    47.25 seconds  945.00 x 
Applescript    71.75 seconds  1435.00 x 
Io 20070410    85.26 seconds  1705.13 x 
+0

"à peu près de la même manière dans chaque langue pour faire une comparaison de performance raisonnable" - Vous n'avez pas dit pourquoi vous pensez que cela ferait en sorte une comparaison raisonnable des performances? – igouy

+2

Java 1.4.2? L'éléphant non mentionné dans la salle - le jeu de repères ;-) – igouy

0

Le point flottant etc chiffres à partir d'une unité centrale de traitement sont moins subjectives d'une page web/webservice etc.pour faire une comparaison équitable entre les langues sera difficile et souvent le problème est la façon dont il est écrit, pas la langue elle-même. Il serait difficile de comparer avec précision les langues, mais pas impossible. L'analogie la plus simple pour moi est que les mécanismes d'évaluation de la base de données TPC sont bien connus et fournissent des chiffres de performance du côté de la base de données, mais quand le développeur moyen les examine-t-il? À moins que vous ne travailliez à un niveau extrême, ils ne sont pas votre guide (et même dans ce cas, les DB incluent des raccourcis optimiseurs pour améliorer les scores TPC.)

TPC a créé une entreprise à but non lucratif. prend l'avantage significatif des produits concurrents - si MS/Oracle/IBM avec les fournisseurs de matériel n'ont pas acheté dedans, cela ne serait pas allé très loin.

Pourrait-il être fait? peut-être, ne jamais dire jamais, mais ce ne serait pas trivial du tout et nécessite l'adhésion de plusieurs fournisseurs de langue, fournisseurs h/w etc. Il s'agit plus de ventes et de marketting que la technologie à ce moment-là.

-2

Quelqu'un at-il trouvé un bon ensemble de tests de performance pour un langage de programmation?

Probablement pas et cela semble de moins en moins susceptible de se produire - voir "Flawed Benchmarks" et en particulier les « points de repère sont foutaise ».

Je parle des choses simples qui peuvent être faites de manière identique dans toutes les langues

Qu'est-ce qui vous fait penser que vous pouvez dire qu'ils sont « fait identique dans toutes les langues »? Le code source du programme peut sembler le même, mais cela ne signifie pas que la même chose est faite par les interprètes du langage ou les mêmes instructions du processeur sont générées par les compilateurs.

1

Vous parlez des technologies de base ici, qui sont trop générales pour spécification. Le web est plus sur le réseautage et les télécommunications que les langages de programmation. La transmission, la modulation et la réception du signal affectent la qualité du service. Pensez aux jeux multijoueurs ou au portail d'affaires de votre back-office. Les principales considérations concernant les performances de l'application peuvent être la météo, le bruit du signal, la distance, le nombre de personnes utilisant la ressource, etc. Les caractéristiques du serveur et les périphériques des utilisateurs vont jouer un rôle majeur dans la convivialité de votre programme. Enfin, votre programme fonctionnera-t-il correctement sur différentes plates-formes? Donc, le plus gros problème pour les programmeurs n'est pas la langue, mais les bugs. Ne pas avoir de programmes buggy. Ce n'est pas le compilateur. C'est le code.

J'ai eu la même question. JavaScript ou dot net. La réponse dépend de ce que vous voulez faire. Faire l'aspect de la page, des données simples, ou des opérations faciles probablement script, parce que le script a une structure de langage simple. Les opérations complexes ou un magasin de données plus grand obtiendraient de meilleures performances à partir d'un langage de programmation plus robuste et structuré comme C++.

Il y a aussi le facteur monétaire, qui a une corrélation positive avec la sophistication de la présentation des médias. Tout! coûte de l'argent, même votre temps. C'est peut-être obscur, mais le coût est là. Générique (open source) n'est pas toujours meilleur, car les coûts cachés surgissent lorsque vous voulez utiliser les ressources de quelqu'un d'autre. Souvent, le $$ company $$ a des outils plus efficaces à utiliser pour manipuler les ressources qu'ils possèdent, et les outils peuvent nécessiter un langage ou une technologie spécifique. C'est-à-dire, vous n'avez pas toujours le choix de la langue. Cette décision a déjà été prise dans le développement des ressources.

Questions connexes