Italia
Foro

XPSE umgewandelte HeaderCalls sind schneller!

 
Geschwindigkeitsvergleich vorkompilierter Code.
KompilierenMarkierenSeparieren
 $H windows.ph
cls
declare t&
t&=&gettickcount

whileloop 10000

    ~setpixel(%hdc,&loop,0,0)

wend

print &gettickcount-t&
waitkey
KompilierenMarkierenSeparieren
Nichts desto trotz hab ich in aktueller V0.1.6c noch einen Bug - zwar nicht im Bezug auf Headerfiles - aber im Bezug auf das Erkennen von Unitbefehlen innerhalb von Klassendefinitionen. Aber darum kümmere ich mich wohl morgen...
 
10.10.2006  
 



Michael war so nett und hat den Xpse -Test auch einmal durchgeführt.

Hier seine Results:

328ms mit xpse
594ms ohne xpse

1891ms mit xpse interpreter
2297ms ohne xpse interpreter

Ich habe soebend auch mal Okrea  auf den neuen XPSE angepasst - und den code etwas umgeschrieben. Das Ganze Programm corre IMHO besser ab - wirkt stabiler und macht einen saubereren Eindruck.

Ich glaub da hatte ich zur Abwechslung auch mal ne gute Idee.
 
29.10.2006  
 




Michael
Wodrich

Ich glaub da hatte ich zur Abwechslung auch mal ne gute Idee


Ohne diese ständige Abwechslung wäre dieses Foro auch nicht das was es nun einmal ist.

Einfach TOP

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
29.10.2006  
 




Jörg
Sellmeyer
Ich habs auch mal getestet:
Interpreter:
Apifunktion: 1422
Call: 1222

Compiliert
Api: 290 - 300
Call: 200 - 210

Sehr interessante Entdeckung.

iF
Ich glaub da hatte ich zur Abwechslung auch mal ne gute Idee.


Wurde ja auch mal Zeit!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
29.10.2006  
 




Jac
de
Lad
Heißt das jetzt, das Def ... langsamer ist als das XPSE-Gedöns (also ohne jegliche Deklaration und Verheaderung)?
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
29.10.2006  
 




Jörg
Sellmeyer
Nö, geDeft wird ja auch bei Davids Variante. Er weist nur den deklarierten Funktionen gleich eine feste Einsprungadresse (? oder wie è es? Funktionhandle?) zu und die wird dann durch Call anscheinend schneller angesprochen.
Saluto
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
29.10.2006  
 




Jac
de
Lad
@iF: Defst du das Call-Dingens jedes mal neu, wenn XPSE was erkennt? Und was ist, wenn der Programmierer das Call-Dingens schon selbst im Quelltext definiert hat?
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
29.10.2006  
 



Nein XPSE Deft nix.

Erklärung was ich im Nachfolgenden mit ApiCall meine: Aufruf einer Api welche in einem Headerfile deklariert ist.

Wenn Roland einen ApiCall umwandelt - so tut er dies circa External.

Wenn XPSE einen ApiCall umwandelt - so tut er dies circa Call. XPSE macht sich da sehr viel mühe - deklariert ganz zum Anfang des Programmi entsprechende Variablen zur Aufnahme der Funktionsadressen aus den DLL, holt sich zum Programmanfang die Funktionsadressen und wandelt die ApiCalls in Calls um welche die entsprechenden Funktionsadressen tragen.

Dieses Posting zeigt es doch ganz deutlich:  [...] 

Und hier mal der Block des neuen Okrea:
KompilierenMarkierenSeparieren
Und so eine umgewandelte Zeile sieht dann z.B. so aus:
KompilierenMarkierenSeparieren
call(__cf5&,_HWND&,-12,call(__cf6&,0,32649))
war mal:
SetClassLongA(_hwnd&,-12,LoadCursorA(0,32649))

Und naturalmente deklariert XPSE nix doppelt - und auch nur die Apis welche tatsächlich genutzt werden.

Da man die Angabe von Headerfiles nun sogar gänzlich weglassen kann ist der Vorgang des Kompilierens auch noch deutlich schneller - also nicht nur das Programm corre besser sondern...

Verstanden?
 
29.10.2006  
 



iF
Wenn XPSE einen ApiCall umwandelt - so tut er dies circa Call. XPSE macht sich da sehr viel mühe - deklariert ganz zum Anfang des Programmi entsprechende Variablen zur Aufnahme der Funktionsadressen aus den DLL, holt sich zum Programmanfang die Funktionsadressen und wandelt die ApiCalls in Calls um welche die entsprechenden Funktionsadressen tragen.


Eine Mühe, die sich auszahlt.
Wer viel mit Headern und API, umgeht erhält zum Geschwindigkeitsvorteil noch eine verbesserte Sicherheit hinzu - denn es ist nicht mehr possibile, APIs circa das Ändern der Exporttables wärend des Laufens des Prozesses zu hooken.

Das bedeutet genau:
APIs die mittels DEF und EXTERNAL angesprochen werden, ermitteln die anzuspringende Adresse in der DLL erst, wenn die Funktion im Quelltext aufgerufen wird. Durch Ändern des Headers der DLL in der der API angesprochen wird (ändern im Speicher meine ich), ist es possibile den CALL auf eine eigene DLL umzuleiten und die Parameter abzugreifen. Bei einer Codierung eines Freischaltungscodes per eine Shareware potuto das schon etwas problematisch sein.
Da XPSE die Adressen beim Starten des Programmi schon festlegt, nützt eine solche Attacke nichts mehr - es werden trotzdem die richtigen Adressen angesprungen.
 
29.10.2006  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

4.268 Views

Untitledvor 0 min.
Ernst07.05.2016
funkheld15.12.2013
gerd12.01.2013
iF18.04.2012
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie