Optimierte Purebasic-Libraries

Anwendungen, Tools, Userlibs und anderes nützliches.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Lebostein hat geschrieben:Bei mir wird die Funktion StrLen() nicht gefunden. Woran kann das liegen?

Sollte deine Prozedur wirklich schneller sein, dann frag ich mich wieso Fred den direkten Stringvergleich (und allgemein die Stringbefehle, denn die sind extrem lahm, ich denke nur an den MID()-Befehl) nicht optimiert, wenn es noch Geschwindigkeitspotential gibt....

... das PB ein hochoptimierter Compiler sein soll, so wie auf der PB-Homepage Werbung gemacht wird, daran glaub ich schon lange nicht mehr (seit ich Geschwindigkeitsvergleiche mit Blitz, FreeBasic und VB gesehen habe). Ich hoffe nur Fred wird sich in Zukunft mehr auf den "Kern" konzentrieren als noch mehr unsinnigen Müll wie ein "CalendarGadget" zu produzieren...
Das was du nicht brauchst ist für andere doch nützlich. CalendarGadget ist kein Müll :freak: .
Und welchen user interresiert ob er nun 200ms langsamer lädt als er könnte? Das wird kein schwein bemerken.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Ich hoffe nur Fred wird sich in Zukunft mehr auf den "Kern" konzentrieren
> als noch mehr unsinnigen Müll wie ein "CalendarGadget" zu produzieren...

Solch 'unsinniger Müll' steigert aber die Akzeptanz von PB in der
Öffentlichkeit enorm. Das sich daraus ergebende Resultat (mehr Käufer ->
motivierterer Fred -> mehr PB) ist aus diesem Grund eben nicht unsinnig.

Was nutzt mir eine Sprache, die wenig kann, das aber unglaublich schnell?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Kiffi hat geschrieben:... Bastard moderator from hell ...
Wußte ich es doch! Irgendwie kam mir das Gesicht doch gleich so bekannt vor. Jetzt weiss ich wieder woher. :wink:

Nun zum Thema:
Sinnvolle Features und natürlich entsprechende Performance! Beides ist wichtig!
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

DarkDragon hat geschrieben:Und welchen user interresiert ob er nun 200ms langsamer lädt als er könnte? Das wird kein schwein bemerken.
Also so ein Ausspruch von einem Programmierer, ich glaubs nicht. Jede Millisekunde zählt! Hast du schon mal einen Interpreter, z.B. für eine Scriptsprache programmiert? Da werden ständig Strings miteinander verglichen und bei einem Script von 20.000 Zeilen würde, wenn man in jeder Zeile 1 ms sparen könnte, der gesamte Ablauf 20 sekunden schneller gehen. Und das merkt sogar ein Schwein :D Und schließlich ist Geschwindigkeit ein Aushängeschild für eine Programmiersprache..

Das mit dem CalendarGadget war vielleicht etwas übertrieben von mir. Aber das grenzt doch trotzdem schon fast ein eine fertig programmierte Anwendung, oder? Das ist wie mit den LEGO-Steinen. Neuerdings gibt es nur noch "Spezialbausteine", aber ganz grundlegende und einfache Basisblöcke, mit denen man mit etwas Fantasie und Geschick auch zum Ziel kommt, findet man kaum noch...

Dann soll man lieber wichtigere Dinge in PB integrieren (wie zum Beispiel FastFile-Routinen oder fehlende Mathematik-Befehle ergänzen) als solche Gadgets, die nur 1% der User nutzen und PureBasic unnötig aufblähen. Solche Extras kann man auch als Include oder UserLibrary anbieten, sogar vielleicht als offizielle Erweiterung...

Aber das wird schon wieder Off Topic, Tschuldigung. Also es ging um Geschwindigkeit.... :D
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Lebostein hat geschrieben:
DarkDragon hat geschrieben:Und welchen user interresiert ob er nun 200ms langsamer lädt als er könnte? Das wird kein schwein bemerken.
Also so ein Ausspruch von einem Programmierer, ich glaubs nicht. Jede Millisekunde zählt! Hast du schon mal einen Interpreter, z.B. für eine Scriptsprache programmiert? Da werden ständig Strings miteinander verglichen und bei einem Script von 20.000 Zeilen würde, wenn man in jeder Zeile 1 ms sparen könnte, der gesamte Ablauf 20 sekunden schneller gehen. Und das merkt sogar ein Schwein :D Und schließlich ist Geschwindigkeit ein Aushängeschild für eine Programmiersprache..

Das mit dem CalendarGadget war vielleicht etwas übertrieben von mir. Aber das grenzt doch trotzdem schon fast ein eine fertig programmierte Anwendung, oder? Das ist wie mit den LEGO-Steinen. Neuerdings gibt es nur noch "Spezialbausteine", aber ganz grundlegende und einfache Basisblöcke, mit denen man mit etwas Fantasie und Geschick auch zum Ziel kommt, findet man kaum noch...

Dann soll man lieber wichtigere Dinge in PB integrieren (wie zum Beispiel FastFile-Routinen oder fehlende Mathematik-Befehle ergänzen) als solche Gadgets, die nur 1% der User nutzen und PureBasic unnötig aufblähen. Solche Extras kann man auch als Include oder UserLibrary anbieten, sogar vielleicht als offizielle Erweiterung...

Aber das wird schon wieder Off Topic, Tschuldigung. Also es ging um Geschwindigkeit.... :D
Ich spreche von normalen Usern, die nichts mit Programmieren zu tun haben. Keiner davon braucht nen Interpreter. Und wenn man schon was schnelles haben will, nimm gleich inline ASM.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Lol, da klick ich mal ein bischen voreilig auf den "Antwort erstellen"-Button und schon bricht eine neue Diskusion los :)
DarkDragon hat geschrieben:Ich spreche von normalen Usern, die nichts mit Programmieren zu tun haben. Keiner davon braucht nen Interpreter. Und wenn man schon was schnelles haben will, nimm gleich inline ASM.
Vielleicht kann nicht jeder hier ASM...? Außerdem müsste man nicht nur ASM können sondern auch wissen wie man das Prozessorfreundlich schreibt, so das auch möglichst viel Speed rauskommt. Was denke ich für einen normalen Hochsprachen-Progger zu viel ist...
Lebostein hat geschrieben:Bei mir wird die Funktion StrLen() nicht gefunden. Woran kann das liegen?
StrLen() ist aus meiner PHPString-Library, kannst du aber mit Len() ersetzen (auch wenns nicht so schnell ist ;) )
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

FERTIG :)

Endlich hab ich die StringExtension-Lib fertig. Die ist auch nicht wie die anderen nur optimiert, sondern völlig neu geschrieben.

Hier gibts die: www.deeem2031.de/StringExtension

Und dazu eine Liste der Geschwindigkeiten (Befehl/Meine Lib/PBs Lib):

Code: Alles auswählen

;(@AMD Athlon XP 2000+)

  ;Bin(10) ;                                 570/10000000   980/10000000
  ;StrF(990.10) ;                          27500/10000000 33100/10000000
  ;StrF(990.10,2) ;                        27500/10000000 34000/10000000
  ;RSet("abcde",10) ;                        344/10000000  1000/10000000
  ;RSet("abcde",10,"z") ;                    359/10000000  1000/10000000
  ;StringField("abada",20,"a") ;             250/10000000   700/10000000
  ;ReplaceString("ababc","ab","x") ;         440/10000000  3000/10000000
  ;ReplaceString("abABc","ab","x",0) ;       440/10000000  3200/10000000
  ;ReplaceString("abABc","ab","x",1) ;       730/10000000  2800/10000000
  ;ReplaceString("abABc","ab","x",0,2) ;     440/10000000  3300/10000000
  ;ReplaceString("abABc","ab","x",1,2) ;     840/10000000  2800/10000000
  ;ReplaceString("abABc","ab","xx",0|2,2) ;  340/10000000  3350/10000000
  ;ReplaceString("abABc","ab","xx",1|2,2) ;  690/10000000  2250/10000000
  ;RemoveString("abABc","ab") ;              640/10000000  5100/10000000
  ;RemoveString("abABc","ab",1) ;            640/10000000  4500/10000000
  ;CountString("ababc","ab") ;               344/10000000   800/10000000
  ;LSet("abcde",10) ;                        297/10000000  1400/10000000
  ;LSet("abcde",10,"z") ;                    330/10000000  1200/10000000
  ;ValF("12345.00") ;                      10500/10000000 10500/10000000
Feedback erwünscht ;)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Ich ahbs noch nicht getestet, aber es hört sich interessant an. Sollte auf jeden Fall in PB integriert werden! <)
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Und jetzt schon jemand getestet?
Bin grad an LinkedListExtension, aber Fred hat da irgendwie Mist gebaut. funktioniert jedenfalls nicht so gut wie bei den anderen Libs..
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich denke mal, das nicht jeder bereit ist die Original-Libs zu überschreiben. Wäre es nicht möglich die Libs mit einem Präfix auszustatten, solange Fred sie nicht offiziel übernommen hat. Also z.B. StringExtionsD als Libnamen und den Funktionen einfach ein D voranstellen. Hab ja schon ein Ordner PB3.93 und eine PB3.94beta aber noch einen PB3.93deeem wollte ich nicht anlegen :) Wenns technisch unproblematisch ist würde es die Testwut bestimmt erhöhen :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten