Ich habe die Geschwindigkeit von Hash mit Topaz, Ruby und Python verglichen

Ich habe die Geschwindigkeit von Hash mit Topaz verglichen, einer Ruby-Implementierung, die angeblich mit RPython schneller ist.

Es wurde darauf hingewiesen, dass Ruby's Hash [langsamer als andere Sprachen] ist (http://incise.org/hash-table-benchmarks.html). Es wird gesagt, dass je größer die Größe, desto langsamer ist es als Perl oder Python. (Ich habe vergessen, wo der Vergleich mit Perl war)

Also machte ich einen Vergleich mit einer schwachen Erwartung, dass es schneller sein würde, wenn Topaz verwendet würde.

Für die Einführung von Topaz bezog ich mich auf Spielen mit Topaz, einem Ruby-Verarbeitungssystem, das in RPython-Gnyara-kuns Wktk-Management-Tagebuch geschrieben ist.

Der zum Vergleich verwendete Code finden Sie unter Github. Diesmal habe ich Ecken geschnitten und nicht gemittelt. Als Referenzwert.

Die Umwelt ist MacOS X 10.8.2 Intel Core i5 2.5GHz 8GB RAM

python


$ ruby -v
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-darwin12.2.1]
$ python --version
Python 2.7.3
$ bin/topaz -v
topaz (ruby-1.9.3p125) [x86_64-darwin]

Sequentielle Hash-Erstellungsgeschwindigkeit

Das Gerät ist Sekunden

size Ruby1.9.3(int) Ruby1.9.3(string) topaz(int) topaz(string) Python2.7.3(int) Python2.7.3(string)
5000000 4.617856 8.087801 2.649405 11.485846 0.702034 2.473861
10000000 10.74621 19.092902 8.377534 36.823358 1.361577 5.112283
15000000 17.081968 29.101156 18.608418 80.467088 2.262289 8.392108
20000000 24.308324 39.974923 29.239815 129.432628 2.712998 10.639115
25000000 31.778632 51.38185 49.467747 303.785251 4.048304 15.097062
30000000 39.180657 60.673959 67.91127 342.049215 4.510771 17.036763

Das Diagramm sieht so aus. Creating Hash(int)

Creating Hash(string)

Topaz ist nicht schneller als ich erwartet hatte. .. ..

Suchgeschwindigkeit

Das Gerät ist Sekunden

size Ruby1.9.3(int) Ruby1.9.3(string) topaz(int) topaz(string) Python2.7.3(int) Python2.7.3(string)
5000000 0.600543 0.908508 0.442561 0.678826 0.164233 0.456206
10000000 0.631404 1.027941 0.49407 0.738537 0.165629 0.457019
15000000 0.665743 0.913473 0.585652 0.883217 0.157661 0.462758
20000000 0.72521 1.288778 0.599958 0.93315 0.19554 0.452863
25000000 0.561795 0.877556 0.780173 1.232231 0.163047 0.478319
30000000 0.657025 1.296413 0.783736 1.353858 0.160251 0.456952

Klicken Sie hier für die Grafik Lookup Hash(int)

Lookup Hash(string)

Was ich darüber nachgedacht habe

Ich freue mich auf Topaz, da es in Zukunft vielleicht schneller sein wird, aber im Moment

Es gibt auch verschiedene strenge Punkte wie. Ich freue mich auf die zukünftige Entwicklung.

Recommended Posts

Ich habe die Geschwindigkeit von Hash mit Topaz, Ruby und Python verglichen
Ich habe die numerische Berechnung von Python durch Rust ersetzt und die Geschwindigkeit verglichen
Ich habe die Geschwindigkeit regulärer Ausdrücke in Ruby, Python und Perl (Version 2013) verglichen.
Ich habe die Geschwindigkeit der Listeneinschlussnotation für und während mit Python2.7 gemessen.
Ich verglich die Geschwindigkeit von Go Language Web Framework Echo und Python Web Framework Flask
Ich habe die Geschwindigkeit der Referenz des Pythons in der Liste und die Referenz der Wörterbucheinbeziehung aus der In-Liste verglichen.
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Angeben des Bereichs von Ruby- und Python-Arrays
Vergleichen Sie die Geschwindigkeit von Python Append und Map
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Ich habe Java und Python verglichen!
Ich habe mir die Versionen von Blender und Python angesehen
Ich habe den gleitenden Durchschnitt des IIR-Filtertyps mit Pandas und Scipy verglichen
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Versionsverwaltung von Node, Ruby und Python mit anyenv
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Ich habe die Strategie des Aktiensystemhandels mit Python evaluiert.
Zusammenfassung der Unterstützung von Hash-Operationen (Dictionary) für Ruby und Python
Ich möchte die Natur von Python und Pip kennenlernen
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Die Geschichte von Python und die Geschichte von NaN
Scraping mit Node, Ruby und Python
Ich mochte den Tweet mit Python. ..
Ich habe Java und Ruby persönlich verglichen
Ich habe mit PyQt5 und Python3 gespielt
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Geschwindigkeitsvergleich der Volltextverarbeitung von Wiktionary mit F # und Python
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
[Python] Ich habe die Theorie und Implementierung der logistischen Regression gründlich erklärt
[Python] Ich habe die Theorie und Implementierung des Entscheidungsbaums gründlich erklärt
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe Python3 Standard Argparse und Python-Fire verglichen
Überprüfen Sie die Existenz der Datei mit Python
Ich kannte die Grundlagen von Python nicht
Ich habe Numba mit Python3.5 installiert und verwendet
Die Python-Projektvorlage, an die ich denke.
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Einfaches Web-Scraping mit Python und Ruby
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe den Akkord des Songs mit word2vec vektorisiert und mit t-SNE visualisiert
Ich habe 0 Jahre Programmiererfahrung und fordere die Datenverarbeitung mit Python heraus
Finden Sie die allgemeinen Begriffe der Tribonacci-Sequenz in linearer Algebra und Python
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Erhalten und schätzen Sie die Form des Kopfes mit Dlib und OpenCV mit Python
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University
Ich habe Hunderte Millionen SQLite mit Python ausprobiert