![]() |
AW: PosEx? Oder doch lieber Pos? - Performance!
Zitat:
Du sagst, Pos scheint enorm langsam zu sein, und dass PosEx nicht schneller ist. Was ist denn nun schneller gewesen bei deinem Test :-D |
AW: PosEx? Oder doch lieber Pos? - Performance!
Zitat:
Zitat:
In Spring haben wir übrigens folgenden Code:
Delphi-Quellcode:
:mrgreen:
{$IFNDEF DELPHIXE3_UP}
function Pos(const SubStr, Str: UnicodeString; Offset: Integer): Integer; asm jmp PosEx end; {$ENDIF} |
AW: PosEx? Oder doch lieber Pos? - Performance!
Ok interessant.
Zur Frage, welchen offSet ich bei PosEx verwenden würde: ich benutze gar keinen. Ich gebe keinen an, also gilt 1. |
AW: PosEx? Oder doch lieber Pos? - Performance!
Ich habe Günthers Code mit kleinen Abweichungen (TStopwatch ist unbekannt)
durch D2006 und D7 gejagt D2006 pos: 0,024 posex:0,024 s D7 pos:0,152 posex 0,147 s und hier der code:
Delphi-Quellcode:
Packt man noch 40 Leerzeichen an den Anfang von S1, dann ist das Verhältnis 0,201/0,198.
program Project2;
{$APPTYPE CONSOLE} {$R *.res} uses SysUtils ,strutils ; const s1 = 'Hallo Welt'; s2 = 'lo'; count = 2E6; //{$Define Posex} var times: Integer; result: Integer; sz,ez : tdatetime; begin times := 0; sz:=now; repeat {$If Defined(Posex)} result := PosEx(s2, s1); {$Else} result := System.Pos(s2, s1); {$IFEnd} Inc(times); until (times = count); ez:=now; Writeln(formatdatetime('HH:MM:SS,zz', ez-sz) ); readln; end. Es scheint wohl wieder zu gelten: "wer misst, misst Mist" Gruß K-H |
AW: PosEx? Oder doch lieber Pos? - Performance!
Beides Pre-Unicode Versionen, somit: Äpfel <> Birnen
Außerdem ist mit Now messen auch Tinnef. |
AW: PosEx? Oder doch lieber Pos? - Performance!
In beiden Fällen werden Ansis verglichen, das sind Äpfel oder Birnen aus dem gleichen Korb.
Die Ausgangsfrage war gibt es einen Unterschied zwischen pos und posex, was implizit "beim gleichen Compiler beinhaltet"? Und im Rahmen der Meßgenauigkeit kann ich Dir sagen für D2006 und D7 gilt nein. Gruß K-H |
AW: PosEx? Oder doch lieber Pos? - Performance!
Also "früher" gab es im Delphi kein PoSex, darum brauchte man eine eigene/fremde Implementation. (bis um Delphi 6/7 rum, irgendwann)
Aber spater war die Implementation von PosEx eigentlich fast identisch mit Pos... nur noch weitere Parameter, dessen Bereichsprüfung und dann ein anderer einstieg in die Suchschleife (loop). Also Eigentlich sollte das PosEx einen "Hauch" von wenigen CPU-Zyklen langsamer sein. Dann hatte man das FastCode-Projekt teilweise in Delphi integriert und k.A. wie es dann war. Und jetzt klingt es so, als wenn man Pos durch PosEx ersetzt hat, was ja im Prinzip auch praktisch keinen Unterschied macht, wenn beides "gleich" implementiert war. |
AW: PosEx? Oder doch lieber Pos? - Performance!
Ich liebe es wie sich hier bei dieser Routine auf einmal alle so viel Mühe geben die Groß/Kleinschreibung zu beachten :mrgreen:
|
AW: PosEx? Oder doch lieber Pos? - Performance!
Zitat:
Gruß K-H P.S. Laut den Sourcen ist das PosEx in D7 aus dem FastCode-Projekt. |
AW: PosEx? Oder doch lieber Pos? - Performance!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz