Aktuelle Zeit: 09.12.2019 05:04

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Warum ist PB schneller als Go oder NodeJS (Filesystem)
BeitragVerfasst: 04.03.2019 23:28 
Offline

Registriert: 13.09.2004 11:28
Hallo liebe PBler.

ich meine es irgendwo gelesen zu haben (damals als ich mit PB anfing): In welcher Sprache ist PB entwickelt?

Warum ich wieder zu der Frage komme? Wegen der "krassen Perfomance" von Purebasic.
..oder ich verstehe oder mache was falsch.

Denn, ich habe mich gewundert warum meine Routine zum "rekursiven Einlesen eines Pfades/laufwerks" so viel schneller ist als wenn ich eine ähnliche Routine in NodeJS oder Go(lang) schreibe.
Zumal bei NodeJS und Go die Routinen bereits vorhanden sind, dort wir ja quasi mit einer Zeile rekursiv eingelesen. In PB ist das ein tick mehr (in meinen Fall ne ganze Seite).

Als beispiel: Lass ich von der SSD mal eben ~10.000 Dateien einlesen, braucht

NodeJS lässige 1530ms (also gut 1,5 sek)
Go (was ja als so schnell im Netz benannt wird), schon gute 500ms
meine PB-Routine (nix besonderes), fixe 140ms.

Mir ist klar das es vielleicht in anderen Bereichen wie komplexe Berechnungen etc anders aussehen kann, dennoch wundere ich mich.

_________________
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warum ist PB schneller als Go oder NodeJS (Filesystem)
BeitragVerfasst: 04.03.2019 23:55 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo Agent!

Zitat:
Warum ist PureBasic schneller als... ?


Ich denke es kommt auch immer auf den verwendeten Algorithmus und den Programmaufbau als solchen an.

PureBasic ist eigentlich nicht schnell.

Oder doch ?

Java, C#, Python, etc.

Es gibt sehr viele Programmiersprachen mit denen man viel schnellere Programme (nicht schneller :wink: ) als mit PureBasic schreiben kann, obwohl man eigentlich oft sagt das diese Programmiersprachen langsamer sind als PureBasic.

Das kann viele Gründe haben:
Zum Beispiel kann es in einer anderen Programmiersprache eine Funktion geben die einen super hypergenial ausgetüftelten schnellen Algorithmus besitzt und man diese Funktion einfach im Baukastenprinzip für sich nutzt. Und unter PureBasic hat man diese Funktion nicht und ist natürlich selber auch viel zu dämlich auch nur ansatzweise so einen performanten Algorithmus zu schreiben.

Naja, so ist das halt.

Zitat:
In welcher Sprache ist PB entwickelt?


PureBasic ist eine auf C und Assembler basierende Programmiersprache.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.1 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warum ist PB schneller als Go oder NodeJS (Filesystem)
BeitragVerfasst: 04.03.2019 23:59 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
PB Code wird meines Wissens in Assembler umgesetzt. FASM als Stichwort.
Die Programme sind daher recht klein und schnell.

Was deinen Zeitvergleich angeht, ist das womöglich falsch "gemessen".
Beim einlesen von Verzeichnissen wird ein Zwischenspeicher gefüllt, der beim erneuten einlesen
benutzt wird, anstelle der Festplatte. Selbst bei einer SSD bringt das Geschwindigkeit.

Wenn du solche "FileOperationen" messen willst musst du dafür sorgen, dass der Filecache leer ist.

(Oder den Rechner nach jedem Durchgang neu starten ;) )

_________________
PureBasic 5.71 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce GTX 980 X4 Ultra | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warum ist PB schneller als Go oder NodeJS (Filesystem)
BeitragVerfasst: 05.03.2019 00:51 
Offline

Registriert: 13.09.2004 11:28
@bisonte

Das ist mir klar. ich habe den/die Tests 1. in jeder Sprache mind. 3x durchführen lassen (ne for-loop). Dann teilweise jede sprache nacheinander. Zwischendrin immer mal neu gestartet und eine andere Sprache als erstes starten lassen. Die Ergebnisse waren immer bis auf wenige ms (vernachlässigbar) gleich. :)
Für mich ist das schon so vergleichbar.

Mir sind die ganzen unterschiede und Parameter schon (mehr oder weniger genau) bewusst. Dennoch wundere ich mich das so populäre, quelloffene Programmiersprachen, die ja von unzähligen auch optimiert werden im Verhältnis so schlecht abschneiden. Mich freut es einerseits das PB (in dieser Sache) so gut dabei ist, wundert mich dennoch.
Erklärt vielleicht aber vielleicht das es in C /ASM entwickelt ist :)

btw: Java hat 1625ms gebraucht (grad mal probiert).

Ich bin immer noch auf der suche nach einer weiteren Programmiersprache und spiele mit einigen herum. Mir ist klar das jede so ihre Vorzüge hat und es keine "beste" "universalsprache" gibt. Dennoch hatte ich erwartet das man was schnelleres findet als eine Basic Spache? o.O Bei den interpretern / script-Sprachen hat es mich nicht gewundert das die langsamer sind. Bei Go schon. Und mir ist klar das ein Go, NodeJS etc async arbeiten (können) und somit vieles gleichzeitig abarbeiten was sowas natürlich kompensieren kann. ;)

Naja. ich wollte das auch nur mal loswerden :)

_________________
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warum ist PB schneller als Go oder NodeJS (Filesystem)
BeitragVerfasst: 05.03.2019 01:09 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
....
Und dann stellen sich die Fragen nach nutzbaren API-Schnittstellen.

Welche Funktionen werden von der Betriebssystem-API geboten ?

Kann man diese nutzen ?

Kann man Funktionen anderer Programmiersprachen nutzen ?

Und so weiter ...

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.1 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Warum ist PB schneller als Go oder NodeJS (Filesystem)
BeitragVerfasst: 07.03.2019 20:01 
Offline

Registriert: 29.08.2004 13:18
Kann mehrere Gründe haben. Zum einen kann schlicht das Betriebsystem was zwischenspeichern, deshalb sollte man bei solchen tests eigentlich immer einen Neustart machen.

Was vielleicht auch wichtig ist: Purebasic-Programme laufen nativ, sprich die CPU kann alles selbst machen, es gibt keine zwischenschicht (wie sie bei Java vorkommt). Eine Compilersprache.

NodeJS setzt anscheinend auf Javascript-Laufwerksumgebung. Solche Umgebungen fressen Zeit und Resourcen. Du musst dir das so vorstellen: Ein PB programm spricht die Sprache der CPU/Betriebsystems, es kann sofort ausgeführt. Das NodeJS ist quasi Japanisch. Es muss zur Laufzeit in die CPU-Sprache übersetzt werden. Das kostet natürlich Zeit. Vorteil ist allerdings, wenn du die Laufzeitumgebung an eine andere Hardware/Betriebsystem-Kombi rausbringst, alle Programme sofort darauf laufen. Bei PB-Programmen müsstest du neu kompilen - oder wenn es bspw. auf Android laufen soll - hast du völlig verloren.

GO scheint wohl andere Schwerpunkte zu legen, der code läuft nativ, aber es nutzt einen Garbage Collector ( https://de.wikipedia.org/wiki/Garbage_Collection ) - das bedeutet hier wohl auch einen gewissen Aufwand in Verwaltung gesteckt wird. Vorteil ist, das der Speicher effektiver genutzt werden kann. Unter Umständen gibts noch andere Vorteile.

Java ist übrigens sowohl Interpreterartig und hat einen Garbage Collector :) (p.s. Javascript müsste auch einen Garbage Collector haben).

Normal hätte ich gesagt, das beim durchsuchen eigentlich die Verzeichnisoperationen jeden Geschwindigkeitsvorteil vernichten. Das trotzdem solche Unterschiede vorkommen, kann bspw. an Strings liegen und wie sie verwaltet werden. Ich geh mal davon aus, das du nicht nur einliest, sondern alles irgendwo abspeicherst. Hier könnte bei GO öfferst der Garbage Collector aktiv werden und Speicher aufräumen.

Es kommt halt immer drauf an, was du wie machst. Nicht immer ist Geschwindigkeit das einzige Kriterium. Sicherheit kann ein weiteres sein. Oder Portabilität. Je nach Aufgabe des Server kann auch eine effizientere Speichernutzung vorteilhaft sein.

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye