Comment effectuer des tests de performance sur les bibliothèques écrites dans différents langages de programmation?

StackOverflow https://stackoverflow.com/questions/789376

Question

Le problème est : Étant donné un certain nombre de bibliothèques de programmation avec une portée similaire ou égale (par exemple analyseur XML, regex, balisage, ...); sont là des outils, avec lesquels on peut exécuter des tests de performance sur ces bibliothèques et comparer (et générer des rapports), même si les bibliothèques peuvent être écrits dans différents langages de programmation (comme Java, C #, Ruby, Python, Perl, ...) ?

Je regardais ces opensourcetesting.org/performance.php , mais aucun d'entre eux équipé dans l'exigence (un peu floue) ci-dessus.

Y at-il des boîtes à outils ou des cadres là-bas pour les tests de performance multi-plateforme cross-langue?

Merci.

Était-ce utile?

La solution

Je ne voudrais pas essayer d'utiliser une boîte à outils unique pour plusieurs langues. C'est peu susceptible de faire ressortir le meilleur (ou même la moyenne) la performance pour chaque application.

Au lieu de cela, je voudrais essayer de trouver une conception-cadre qui définit ce qu'il va tester, et dispose d'un ensemble de données communes. Ensuite, chaque langue / bibliothèque peut fournir son propre cadre la mise en œuvre qui teste les opérations qui conviennent à cette bibliothèque. De cette façon, les opérations peuvent être « logiquement équivalent », même si elles n'utilisent pas les exactes même syntaxe / appels. Vous finissez par tester le idiomatiques code pour cette bibliothèque / langue, plutôt qu'un plus petit dénominateur commun.

Ceci est l'approche que j'ai pris pour l'analyse comparative Protocol Buffers. Jusqu'à présent, mon cadre très basique a des implémentations en C # et Java, et je suis en train d'écrire un cadre plus riche qui permet tout un « scénario de référence » à exécuter. L'un des objectifs est idéal que les différentes mises en œuvre au sein de la même plate-forme (par exemple différentes implémentations .NET de Protocol Buffers) devraient être en mesure de connecter le même code d'étalonnage de base avec très peu d'effort.

La chose importante, à mon avis, est d'avoir un ensemble commun d'opérations (même si elles ne sont pas tous mis en œuvre par tous bibliothèques) et une donnée commune ensemble. C'est la seule façon dont les repères peuvent être significatifs.

Autres conseils

Si possible, il serait préférable d'utiliser la forme d'une injection de dépendance de sorte que vous pouvez brancher sur un module et passer par un autre. Vous devez créer une interface unique pour ces bibliothèques avant que tho (wrapper), ce qui rend un travail plus dur, mais la conception globale mieux. Du côté positif, si vous voulez référence l'interface plus tôt ne pas être complète mais juste pour exposer ce que vous pensez être le plus benefitial quand perf. est en question.

Les capacités dépendent beaucoup de la langue utilisée.

Je n'aime pas les tests artificiels. Ils sont la plupart du temps inacurate l'OMI, les gens ont tendance à oublier que une fonction de bibliothèque fait plus ou moins de autre fonction de bibliothèque alors qu'ils ressemblent à la fois la même chose. Je rencontre rarement des repères qui n'ont pas ce genre de propriété.

Sur les autres côtés, il y a rarement une telle chose comme totalement meilleure bibliothèque. De nombreuses bibliothèques présente de bonnes performances dans certains scénarios où d'autres bibliothèques similaires peuvent aspirer, et vice-versa.

Alors, si la performance est la chose la plus importante pour votre application, la meilleure chose à faire l'OMI est de créer une interface pour les opérations que vous souhaitez importer, puis plug-in / out deux bibliothèques et de voir les différences de points de repère réels, repères de votre application en action, pas un charabia de mathématiques ... artifical

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top