Frage

Das Problem ist, : eine Reihe von Programmierbibliotheken mit ähnlichem oder gleichem Umfang Given (zum Beispiel XML-Parser, regex, Markup, ...); gibt es Tools, mit denen man Performance-Tests auf diesen Bibliotheken läuft und vergleichen (und Berichte generieren), auch wenn die Bibliotheken in verschiedenen Programmiersprachen geschrieben werden können (wie Java, C #, Ruby, Python, Perl, ...) ?

schaute ich auf diesen opensourcetesting.org/performance.php , aber keiner von ihnen ausgestattet in die (etwas verschwommen) Anforderung oben.

Gibt es Toolkits oder Frameworks gibt für sprachübergreifende Cross-Plattform-Performance-Tests?

Danke.

War es hilfreich?

Lösung

Ich würde nicht versuchen, ein einziges Toolkit für mehrere Sprachen zu verwenden. Das ist unwahrscheinlich, dass für jede Anwendung die besten (oder sogar die durchschnittlichen) Leistung zu bringen.

Stattdessen würde ich versuchen, mit einem Rahmen-Design zu kommen, das, was es geht um zu testen, definiert und hat einen gemeinsamen Datensatz. Dann wird jede Sprache / Bibliothek einen eigenen Rahmen bieten können Implementierung , welche Tests die Operationen, die für diese Bibliothek geeignet sind. So werden die Operationen können „logisch äquivalent“, auch, wenn sie die nicht verwenden genau gleiche Syntax / Anrufe. Am Ende haben Sie testen die idiomatische Code für diese Bibliothek / Sprache, anstatt nur einen kleinsten gemeinsamen Nenner.

Dies ist der Ansatz, den ich für das Benchmarking Protocol Buffers genommen haben. Bisher mein Grundgerüst hat Implementierungen in C # und Java, und ich bin jetzt einen reichen Rahmen zu schreiben, das einen ganzen „Benchmark-Skript“ kann ausgeführt werden. Ein ideales Ziel ist es, dass verschiedene Implementierungen innerhalb der gleichen Plattform (zum Beispiel unterschiedliche .NET-Implementierungen von Protocol Buffers) sollten in der Lage sein, in den gleichen Kern Benchmarking Code Haken mit sehr wenig Aufwand.

Die wichtige Sache, meiner Meinung nach, ist eine gemeinsame Reihe von Operationen zu haben (auch wenn sie nicht alle umgesetzt von alle Bibliotheken) und einem gemeinsamen Daten einstellen. Das ist der einzige Weg, die Benchmarks sinnvoll sein kann.

Andere Tipps

Wenn möglich, wäre es das Beste sein, irgendeine Form von Dependency Injection zu verwenden, so dass Sie ein Modul-Stecker heraus und schalten Sie ihn ein anderer mit. Sie müßten einzigartige Schnittstelle für solche Bibliotheken erstellen, bevor dieser tho (Wrapper, der ist), die ein Job schwieriger macht aber insgesamt Design besser. Auf der positiven Seite, wenn Sie Benchmarks wollen frühere Schnittstelle muss nicht vollständig sein, aber nur um enthüllen, was Sie würden denken die meisten benefitial wenn perf. in Frage.

Die Fähigkeiten sehr viel hängt von der verwendeten Sprache.

Ich mag keine künstlichen Tests. Sie sind die meiste Zeit inacurate IMO, Menschen neigen dazu, zu übersehen, dass eine Bibliotheksfunktion mehr hat oder weniger als andere Bibliotheksfunktion, während sie beide aussehen wie die gleiche Sache. Ich begegne selten Benchmarks, die nicht diese Art von Eigentum haben.

Auf den anderen Seiten gibt es selten so etwas wie ein völlig bessere Bibliothek. Viele Bibliotheken vorhanden gute Leistung in einigen Szenarien, in denen andere ähnliche Bibliotheken saugen kann, und umgekehrt.

Also, wenn die Leistung das Wichtigste für Ihre Anwendung ist, das Beste, was IMO zu tun Schnittstelle für die Operationen erstellen möchten Sie importieren möchten, dann Plugin / heraus paar Bibliotheken und die Unterschiede in der realen Benchmarks sehen, Benchmarks Ihre App in Aktion, nicht einiger artifical Mathe Hokuspokus ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top