Optimierte Purebasic-Libraries

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Jap, das hab ich auch mit der ADV-Library festgestellt!
@Deeem: Hast du die internen Funktionsnamen geändert?

Feedback:
Gute Arbeit :allright:
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Das hatte DarkDragon auch, das liegt daran das eine andere Lib auf die Proceduren zugreift. Die heißen aber nichtmehr "_PB_..." sondern "PB_...", weil es keine C-Libs sondern ASM-Libs sind. Musst du also entweder auf die neue Memory-Lib oder auf die andere Lib verzichten.

Könnte sogar an einer alten Version von PHPString liegen...
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 »

Ich hatte grad einen Einfall wie man das umgehen kann. Wer also den Fehler bekommt einfach die Memory-Lib nochmal runterladen. Danach müsste es auch mit den _PB_-Aufrufen funktionieren.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Deeem2031 hat geschrieben:Ich hatte grad einen Einfall wie man das umgehen kann. Wer also den Fehler bekommt einfach die Memory-Lib nochmal runterladen. Danach müsste es auch mit den _PB_-Aufrufen funktionieren.
:? Funktioniert nicht. Bei mir gibts dann OnError Errors.

[EDIT]
OK, Deeem2031 hat's repariert, danke Deeem, nun gehts tadellos!
Zuletzt geändert von DarkDragon am 14.07.2005 15:07, insgesamt 1-mal geändert.
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
dige
Beiträge: 1246
Registriert: 08.09.2004 08:53

Beitrag von dige »

Deeem2031 hat geschrieben:Ich hatte grad einen Einfall wie man das umgehen kann. Wer also den Fehler bekommt einfach die Memory-Lib nochmal runterladen. Danach müsste es auch mit den _PB_-Aufrufen funktionieren.
Leider der gleiche Fehler ....
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

So, hatte noch paar Fehler drin, jetzt sollte es gehen.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
dige
Beiträge: 1246
Registriert: 08.09.2004 08:53

Beitrag von dige »

Jo, jetzt scheints zu gehen ...
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Sehr schön :)

Wer noch ein bischen rumprobieren will: www.deeem2031.de/SYS_AllocateString und www.deeem2031.de/SYS_CopyString

Das Optimieren hat zwar bei den beiden nicht viel gebracht, die waren nämlich schon recht gut optimiert, aber paar Nanosekündchen hats schon gebracht.

Code: Alles auswählen

Init_SYS_CopyString()
Init_SYS_StringEqual()
Init_SYS_AllocateString()

SetThreadPriority_(GetCurrentThread_(),#THREAD_PRIORITY_ABOVE_NORMAL)
#r = 10000000

test.s = "Hallo Welt!"
a.s = "abcdef"

time1 = ElapsedMilliseconds()
For i = 0 To #r
  a = test + "Hallo Welt!" 
  If a = test
  EndIf
Next
time1 = ElapsedMilliseconds() - time1

MessageRequester("",Str(time1))
Bei mir ohne die Inits 4200 ms und mit 2900 ms.

[Edit] Bitte DD - kein Doppelpost ;P
Ich hab mal alle Proceduren die ich bisher optimiert habe zusammen getestet - Ergebnis:
durchschnittliche Zeit einer procedure vorher: 5,7 µs
nachher: 3,7 µs
Das heißt durchschnittlich habe ich 2 µs pro Procedure gutgemacht :)
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 »

wie löscht man nochmal Beiträge? ich find den knopp nich ^^
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

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...
Antworten