AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PosEx? Oder doch lieber Pos? - Performance!

Ein Thema von dGeek · begonnen am 22. Aug 2016 · letzter Beitrag vom 24. Aug 2016
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#21

AW: PosEx? Oder doch lieber Pos? - Performance!

  Alt 23. Aug 2016, 17:21
Wobei Google inzwischen gelernt hat und Minderheiten entsprechend verlinkt.
Bei Google suchendelphi posex

Kann aber auch daran liegen, daß Google inzwischen die "bösen" erotischen Webseiten weiter unten einsortiert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

AW: PosEx? Oder doch lieber Pos? - Performance!

  Alt 23. Aug 2016, 17:45
Wow, selbst die Bilder- und Videosuche ist entsprechend ... harmlos.
  Mit Zitat antworten Zitat
Pixel

Registriert seit: 23. Aug 2016
26 Beiträge
 
#23

AW: PosEx? Oder doch lieber Pos? - Performance!

  Alt 23. Aug 2016, 22:39
..........nvm

Geändert von Pixel (23. Aug 2016 um 23:34 Uhr)
  Mit Zitat antworten Zitat
Pixel

Registriert seit: 23. Aug 2016
26 Beiträge
 
#24

AW: PosEx? Oder doch lieber Pos? - Performance!

  Alt 24. Aug 2016, 20:12
Also ich bin kein ASM-Experte aber hab mir das ganze mal im Debugger angeschaut.

Bilder sind im Anhang.

Bei dem Bild "pos" sieht man den kompletten ASM-Code der pos-funktion

Die Stringsuche beginnt bei Adresse 00402FE8 "REPNE SCAN BYTE PTR..."
Der ASM-Befehl sucht quasi solange nach einem String bis ECX 0 ist.

Bei Bild "posex_main" fällt erstmal auf dass die Funktion anders anfängt. Von der Stringsuchschleife von pos() sieht man erstmal nichts. Aber: z.B. gibt es bei PosEx() ja den 3. Parameter "Offset" der default auf 1 gesetzt ist. Das sieht man auf dem Bild schön bei Adresse 00407CB1 "CMP ECX,1" und "JNZ SHRT findPosi.00407CC1".

Wenn man das Offset unberührt lässt (also bei default 1) dann wird der jump JNZ - "jump if not zero" auch nicht genommen und wir landen bei Adresse 00407CBA "CALL findPosi.0040398C". Wenn man dem folgt landet man bei Bild "posex2" und jetzt erkennt man, dass wir dort dann wieder bei der Funktion pos() sind.

Also tl;dr: posEx() hat einen jump, ein CMP und ein JNZ mehr als pos() und ist somit langsamer . posEx() kann allerdings schneller sein, wenn man das Offset setzt. Ach und: Das ganze hab ich aus Delphi 7

Edit:// Sorry ich wollte eigtl. meinen Beitrag oben editieren.
Miniaturansicht angehängter Grafiken
pos.png   posex_2.png   posex_main.png  

Geändert von Pixel (24. Aug 2016 um 20:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz