Frage

Erste -. Dies ist nicht dazu gedacht, eine zu sein ‚die besser ist, unwissend nicht-ionischer Krieg Faden‘ ... Aber besser gesagt, ich brauchte Hilfe im Allgemeinen bei der Herstellung eine Architektur Entscheidung / Argumente vorwärts zu meinem Chef setzen

Skipping die Details - ich würde einfach nur die Liebe, die Ergebnisse von jedermann zu kennen und finden, der einige Performance-Vergleiche von Shell vs [Insert Allzweck- Programmiersprache (interpretiert) hier), wie C # oder Java getan hat ...

Überraschenderweise habe ich einige Zeit auf Google verbrachte hier auf der Suche keine dieser Daten zu finden. Hat jemand schon einmal diese Vergleiche in verschiedenen Anwendungsfällen getan; dabei verschiedene Arten von SQL eine Datenbank wie in einem XYX # Schleifen schlagen (Oracle pref, aber MSSQL tun würde) abfragt, wie eine der CRUD ops - tun verschiedene Arten von Berechnungen und auch nicht Datenbank schlagen und nur regelmäßigen 50k Loop-Typ Vergleich und Dinge dieser Art?

Insbesondere - für gerade jetzt, ich auf einen Vergleich müssen von einem Shell-Skript auf eine Oracle-DB des Schlagens gegen, sagen wir mal C # (auch hier alle GPPL das ist interpretiert in Ordnung wäre, auch die höheren Ebene diejenigen wie Python). Aber ich muss auch über Standard-Programmier Berechnungen / Anleitungen / etc ...

wissen

Bevor Sie fragen: ‚Warum schreiben Sie nicht nur einen schnellen Test selbst? Die Antwort ist: Ich habe ein Windows-Entwickler mein ganzes Leben / Karriere und haben sehr begrenzte Kenntnisse von Shell Scripting - hier nicht * nix als Ganzes .... So fragt die Frage zu erwähnen, von der mehr erfahrene Jungs wären grealty vorteilhaft, nicht zeitsparend zu erwähnen, wie wir in der Nähe von perputual Frist Crunch sind, wie es ist;).

War es hilfreich?

Lösung

Es war einmal, ye olde Die große Computersprache Shootout haben einige Shell-Skripten enthalten.

Also, mit freundlicher Genehmigung der Internet Archive, 2004 -

Hinweis der Shell-Skripte nicht über Programme für viele der Tests.

    Score Missing-Tests

Java 20     1

Perl 16     0

Python 16   0

gawk 12     6 

mawk 10     6 

bash 7      12  

Hinweis Shell-Skripten können manchmal klein und schnell :-)

"Reverse eine Datei"

        CPU (sec)   Mem (KB)    Lines Code

bash    0.0670      1464        1

C gcc   0.0810    4064        59

Python  0.3869    13160       6

Andere Tipps

Es ist sehr davon abhängig, was das Skript tut. Ich habe schlecht geschriebene Shell-Skripte durch eine beschleunigte gesehen, zwei sogar drei Größenordnungen, indem sie einfach Änderungen.

Normalerweise ist ein Shell-Skript einfach einige Glue-Logik, die Dienstprogramme ausgeführt wird, die in der Regel kompiliert C oder C ++. Wenn das der Fall ist, kann es nicht viel sein, die Dinge zu beschleunigen getan werden kann. Wenn die Hauptarbeit wird durch einen schlecht geschriebenen Dienstprogramm getan, die kompilierte, es ist nur eine Menge vergeudeter Mühe macht wirklich schnell.

sagte, dass, Python oder Perl geht viel schneller als ein Shell-Skript, sondern ein VM oder nativen Code wird schneller leer.

Da Sie uns keine Details sagen können, können wir nicht wirklich spezifische Hilfe zur Verfügung stellen.

Wenn Sie eine einfache Demonstration zum Vergleich sehen wollen, versuchen, mein pure-Bash Implementierung von hexdump und vergleichen sie es mit der realen Sache:

$ time ./bash-hexdump /bin/bash > /dev/null
real    7m17.577s
user    7m2.570s
sys     0m14.745s
$ time hexdump -C /bin/bash > /dev/null
real    0m2.459s
user    0m2.260s
sys     0m0.176s

Einer der Hauptgründe, die Bash Version langsam ist, dass es die Datei Zeichen für Zeichen liest, dem Griff Null-Bytes notwendig ist (Schalen sind nicht sehr gut im binären Datenverarbeitung), aber der Hauptgrund ist die Geschwindigkeit der Ausführung. Hier ist ein Beispiel für ein Python-Skript, das ich gefunden :

$ time ./hexdump.py /bin/bash > /dev/null
real    0m11.694s
user    0m11.605s
sys     0m0.040s

ich einfach nur würde gerne wissen, und die Ergebnisse von niemanden finden, der hat einige Performance-Vergleiche durchgeführt von ...

Die bleibende Lektion solcher Vergleiche ist, dass die besonderen Details Materie -. Viel

Nicht nur die besonderen Details der Aufgabe, aber (sollten wir nicht wissen, wie Programmierer) die besonderen Details, wie der Shell-Skript geschrieben wird.

So können Sie jemanden finden, dass die Shell-Sprache versteht und dass die Shell-Skript überprüfen wurde auf eine effiziente Art und Weise geschrieben? (Wäre es nicht schön, wenn ein paar Zeilen zu ändern, es zu 5 Minuten von 40 Minuten dauert.)

Während Dies gilt nicht für „Shell“ (auch bekannt als sh / bash / KSH / Powerscript) Sprachen, es ist eine relativ große Liste der „Sprache [Implementierung] performance“ - voll gepackt mit Allgemeinheiten und Einsprüchen. In jedem Fall kann jemand es genießen.

http://benchmarksgame.alioth.debian.org/

Wenn Sie Code schreiben, und Sie haben Sorgen über die Geschwindigkeit der Verarbeitung, sollten Sie Code schreiben, die entweder direkt an der Montage oder für eine moderne VM kompiliert wird kompiliert.

Aber ... mit Moores Gesetz Rechenleistung alle 18 Monate aufwirbeln, frage ich mich: sind die Leistungsanforderungen wirklich notwendig? Selbst Code läuft unglaublich schnell auf den meisten modernen Systemen interpretiert, und es wird nur besser mit der Zeit in Gang zu bringen. Brauchen Sie wirklich die Art von Verbesserungen in der Geschwindigkeit, dass kompilierte Code würden Sie geben?

Wenn die Antwort nein ist, schreiben Sie dann in was auch immer Sie glücklich macht.

Wie bereits erwähnt, werden Sie nicht in der Lage sein, SQL-Abfragen von Shell zu tun. Sprachen, die auf einer VM läuft, weil der VM-Faktor ein wenig Zeit im Voraus nehmen, aber ansonsten sollte der Unterschied vernachlässigbar sein.

Wenn die Frage ist wirklich, es zu verringern 40-5 Minuten, dass ich werde versuchen, um herauszufinden, welches Stück der Mehrheit der Zeit nimmt. Wenn die Abfrage für die längste Zeit läuft dann Schalt Sprache wird nicht viel helfen.

Wieder (ohne viele Details in der Frage) Ich würde mit Blick in die verschiedenen Komponenten des Systems beginnen, um zu sehen, welche der Engpass ist.

Just tat dies sehr einfach Benchmark auf meinem System, und die Ergebnisse sind wie erwartet.

Fügen Sie alle ganzen Zahlen zwischen 1 und 50.000 und Ausgang Antwort bei jedem Schritt

Bash: 3 Sekunden C: 0,5 Sekunden

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