Purefiler - Ein alternativer Profiler

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Didelphodon
Beiträge: 360
Registriert: 18.12.2004 13:03
Wohnort: Wien
Kontaktdaten:

Re: Purefiler - Ein alternativer Profiler

Beitrag von Didelphodon »

@Kiffi: Ich habs jetzt geschafft, denke ich. Die neue Version (Build 84), die online ist, erkennt auch Labels mit Blanks vor dem ":"
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Purefiler - Ein alternativer Profiler

Beitrag von Kiffi »

Didelphodon hat geschrieben:@Kiffi: Ich habs jetzt geschafft, denke ich. Die neue Version (Build 84), die online ist, erkennt auch Labels mit Blanks vor dem ":"
Bingo! Dieser Syntax Error ist nun weg. :allright:

Meinen 'geheimen' Code ;-) habe ich mittlerweile auf ein Minimum entschlacken können:

Code: Alles auswählen

EnableExplicit

XIncludeFile "C:\Program Files\PureBasic\Examples\ScintillaHelper\ScintillaHelper.pbi"

Procedure Main()
  
  Protected WWE, Quit
  
  OpenWindow(0,#PB_Ignore,#PB_Ignore,100,100,"")
  
  Repeat
    
    WWE = WaitWindowEvent()
    
    Select WWE
        
      Case #PB_Event_CloseWindow
        Quit = #True
        
    EndSelect
    
  Until Quit = #True
  
EndProcedure

Main()

End
-> Line 199: Syntax error.

Den Scintilla-Helper gibt es hier:
http://www.realsource.de/index.php/down ... illahelper

Danke & Grüße ... Kiffi
Hygge
Benutzeravatar
Didelphodon
Beiträge: 360
Registriert: 18.12.2004 13:03
Wohnort: Wien
Kontaktdaten:

Re: Purefiler - Ein alternativer Profiler

Beitrag von Didelphodon »

Kiffi hat geschrieben:-> Line 199: Syntax error.
Der war ein guter! :mrgreen: Der Scintilla-PBI-File hat ein BOM zu Beginn - worauf ich bislang nicht reagiert habe - und das hat alles durcheinander gebracht.
Ich habs behoben und eine neue Version ist oben. Build 85

LG Didel.
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Purefiler - Ein alternativer Profiler

Beitrag von Kiffi »

Didelphodon hat geschrieben:Ich habs behoben und eine neue Version ist oben. Build 85
Bestätigt. Läuft nun ohne Fehler. Danke! :allright:

Momentan habe ich noch keinen zeitkritischen Code;
allerdings bietet die Profiler-Auswertung eine gute Zusatz-
information über die Laufzeiten meiner Routinen.

(wundert mich, dass es hier so wenig Feedback von den
Gamern gibt; die müssten den Profiler doch eigentlich sehr
gut gebrauchen können.)

Grüße ... Kiffi
Hygge
Benutzeravatar
Didelphodon
Beiträge: 360
Registriert: 18.12.2004 13:03
Wohnort: Wien
Kontaktdaten:

Re: Purefiler - Ein alternativer Profiler

Beitrag von Didelphodon »

Kiffi hat geschrieben: (wundert mich, dass es hier so wenig Feedback von den
Gamern gibt; die müssten den Profiler doch eigentlich sehr
gut gebrauchen können.)
Hm, ja, ich hätt mich auch über mehr positives Feedback, sowohl im englischen Forum, als auch hier, gefreut - Hacke, war das alles nämlich massig.
Anyway, wenigstens ist das Teil jetzt wirklich in einem herzeigbaren, stabilen Zustand.

LG Didel.
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Purefiler - Ein alternativer Profiler

Beitrag von c4s »

Didelphodon hat geschrieben:
Kiffi hat geschrieben: (wundert mich, dass es hier so wenig Feedback von den
Gamern gibt; die müssten den Profiler doch eigentlich sehr
gut gebrauchen können.)
Hm, ja, ich hätt mich auch über mehr positives Feedback, sowohl im englischen Forum, als auch hier, gefreut - Hacke, war das alles nämlich massig.
Anyway, wenigstens ist das Teil jetzt wirklich in einem herzeigbaren, stabilen Zustand.

LG Didel.
So das habe ich jetzt mal als Grund genommen Purefiler auszuprobieren. Nachdem du so viele Updates rausgehauen hast, wollte ich erstmal abwarten bis eine stabile Version online ist. Ich muss außerdem zugeben, dass der lange Beschreibungstext und das Fehlen eine klare Anweisung wie es zu konfigurieren ist, mich abgeschreckt hat.

Also es (Build 85) scheint aber nicht zu funktionieren. Ich starte mit "Kompilieren/Starten" und keine Meldung a la "Purefiler benutzen" kommt. Nur wenn ich - entgegen der Anweisung - es nicht vom Menü verstecke und dann darauf klicke kommt die entsprechende Frage ("mit Purefiler starten"). Drücke ich dann auf ja oder nein tut sich nichts. Mein eigentliches Programm wird in beiden Fällen nicht gestartet! (wobei die IDE kurzzeitig minimiert und maximiert wird?)
Getestet mit PureBasic 4.51 auf XP SP3 x86 und beliebigem Quellcode.


Kleine Frage am Rande: Kann ich auch selber festlegen wo die Logs abgespeichert werden? Ich hätte sie nämlich gerne im selben Verzeichnis von der Exe und nicht irgendwo im System versteckt.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
Rings
Beiträge: 971
Registriert: 29.08.2004 08:48

Re: Purefiler - Ein alternativer Profiler

Beitrag von Rings »

auch von mir hier mal ein dickes lob.
'Profiler' sind absolut wichtig (in jedem größeren Projekt )
um sogannte 'Bottlenecks' (Flaschenhals) festzustellen und
Programmteile später optimieren zu können.

Wir haben diese Jahr schon über $500 in einen besseren
Profiler für VS2005 gesteckt. Der Findet dann aber auch noch
Memoryholes(also mit sowas wie dem 'Purify' ) .

Also , mache bitte weiter.

:allright:
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Purefiler - Ein alternativer Profiler

Beitrag von Kiffi »

c4s hat geschrieben:Ich starte mit "Kompilieren/Starten" und keine Meldung a la "Purefiler benutzen" kommt.
Wenn Du Purefiler so wie im ersten Posting von Didelphodon eingerichtet hast, dann
wird der Purefiler-Code in die Exe eingebaut, wenn Du "Create Executable" ausführst.

Bild

Danach musst Du Deine Exe starten und die zu testenden Programmteile durchlaufen werden.

Hiernach startest Du den Purefiler ohne Parameter. In der Combobox oben links kannst Du dann
Dein Projekt auswählen und anzeigen lassen.

Grüße ... Kiffi
Hygge
Benutzeravatar
Didelphodon
Beiträge: 360
Registriert: 18.12.2004 13:03
Wohnort: Wien
Kontaktdaten:

Re: Purefiler - Ein alternativer Profiler

Beitrag von Didelphodon »

:) Danke für die netten Worte - das motiviert sehr! :)

Ich mach natürlich weiter.

Wie rings es richtig beschrieben hat, wird der Purefiler in seiner (gedachten) initialen Konfiguration erst beim Builden des Exes hineincompiliert. Ob es generell auch beim normalen Compile/Run funktioniert, hab ich noch gar nicht ausprobiert - vielleicht machts ja wer.

Zur Frage nach dem Ablageort der Profiling-Informationen:
Nein, aktuell ist es noch nicht möglich dies zu konfigurieren - aber ich seh schon, dass ich um irgendeine Art von Konfiguration nicht herumkommen werde und da werde ich dann auch die Ablage benutzerdefinierbar machen.

Ach ja, wenn jemand weiß, wie man unter Linux einen Hires-Timestamp ausliest, könnte ich Purefiler auch für Linux zugänglich machen.

LG Didel.
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: Purefiler - Ein alternativer Profiler

Beitrag von cxAlex »

Von mir auch mal ein Fettes Lob, kann ich gut brauchen dein Tool :allright:

Leider scheint es mit ASM nicht so zurechtzukommen, folgender Code wirft einen ASM - Error mit deinem Profiler:

Code: Alles auswählen

Procedure _CreateHash(*pKey.CHARACTER, Mapsize.i)
  CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
    !MOV EAX,5381            ;Startwert hash
    !MOV EBX,EAX             ;für erste Addition in Schleife
    !MOV ESI,dword[p.p_pKey] ;oder LEA ESI,[v_pKey], aber wenn p_pKey eh schon da ist...
    !XOR EDX,EDX             ;EDX auf Null setzen
    !MOV CL,5                ;sollte so schneller sein
    !@@:
    !MOV DL,[ESI]            ;also kein Unicode!
    !OR DL,DL                ;Test auf Null
    !JZ @f                   ;ist Null, Sprung vorwärts
    !SHL EAX,CL              
    !ADD EAX,EBX
    !ADD EAX,EDX
    !MOV EBX,EAX             ;"alten" hash sichern
    !INC ESI
    !JMP @b                  ;Sprung rückwärts, nächsten Wert einlesen
    !@@:
    !MOV dword[p.p_pKey],esi ;wirklich Pointer erhöhen? Sonst weg
    !XOR EDX,EDX             ;schneller und richtiger (!) als CDQ ich gehe hier mal von vorzeichenlosen Werten aus
    !DIV dword[p.v_Mapsize]  ;EAX ist noch hash
    !MOV EAX,EDX             ;Divisions-Rest
  CompilerElse
    !MOV RAX,5381            ;Startwert hash
    !MOV RBX,RAX             ;für erste Addition in Schleife
    !MOV ESI,dword[p.p_pKey] ;oder LEA ESI,[v_pKey], aber wenn p_pKey eh schon da ist...
    !XOR RDX,RDX             ;EDX auf Null setzen
    !MOV CL,5                ;sollte so schneller sein
    !@@:
    !MOV DL,[ESI]            ;also kein Unicode!
    !OR DL,DL                ;Test auf Null
    !JZ @f                   ;ist Null, Sprung vorwärts
    !SHL RAX,CL              ;SHL = SAL; SAL wird selten angegeben
    !ADD RAX,RBX
    !ADD RAX,RDX
    !MOV RBX,RAX             ;"alten" hash sichern
    !INC ESI
    !JMP @b                  ;Sprung rückwärts, nächsten Wert einlesen
    !@@:
    !MOV dword[p.p_pKey],esi ;wirklich Pointer erhöhen? Sonst weg
    !XOR RDX,RDX             ;schneller und richtiger (!) als CDQ ich gehe hier mal von vorzeichenlosen Werten aus
    !DIV dword[p.v_Mapsize]  ;EAX ist noch hash
    !MOV RAX,RDX             ;Divisions-Rest
  CompilerEndIf
  ProcedureReturn        ;Gibt Hash in EAX zurück
EndProcedure

_CreateHash(@"test", 1000)
Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten