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 2 von 3     12 3      
dGeek
(Gast)

n/a Beiträge
 
#11

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

  Alt 23. Aug 2016, 10:07
in XE schien Pos enorm langsam zu sein und nicht etwa PosEx schneller
Also entweder bin ich müde, oder ich beherrsche die deutsche Sprache nicht. Ist das hier nicht doppelt gemoppelt?
Du sagst, Pos scheint enorm langsam zu sein, und dass PosEx nicht schneller ist. Was ist denn nun schneller gewesen bei deinem Test
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#12

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

  Alt 23. Aug 2016, 10:35
in XE schien Pos enorm langsam zu sein und nicht etwa PosEx schneller
Also entweder bin ich müde, oder ich beherrsche die deutsche Sprache nicht. Ist das hier nicht doppelt gemoppelt?
Du sagst, Pos scheint enorm langsam zu sein, und dass PosEx nicht schneller ist. Was ist denn nun schneller gewesen bei deinem Test
Ich wollte damit deine Aussage
Ich habe entdeckt, dass PosEx() viel schneller arbeitet als Pos().
in Relation zu den neueren Delphi Versionen stellen - insofern: Pos (in XE) arbeitet viel langsamer als PosEx (was genauso schnell arbeitet wie Pos in neueren Versionen).

In Spring haben wir übrigens folgenden Code:
Delphi-Quellcode:
{$IFNDEF DELPHIXE3_UP}
function Pos(const SubStr, Str: UnicodeString; Offset: Integer): Integer;
asm
  jmp PosEx
end;
{$ENDIF}
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (23. Aug 2016 um 10:37 Uhr)
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#13

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

  Alt 23. Aug 2016, 10:39
Ok interessant.

Zur Frage, welchen offSet ich bei PosEx verwenden würde: ich benutze gar keinen. Ich gebe keinen an, also gilt 1.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#14

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

  Alt 23. Aug 2016, 11:43
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:
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.
Packt man noch 40 Leerzeichen an den Anfang von S1, dann ist das Verhältnis 0,201/0,198.
Es scheint wohl wieder zu gelten: "wer misst, misst Mist"


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (23. Aug 2016 um 11:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#15

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

  Alt 23. Aug 2016, 12:00
Beides Pre-Unicode Versionen, somit: Äpfel <> Birnen

Außerdem ist mit Now messen auch Tinnef.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

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

  Alt 23. Aug 2016, 12:26
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 23. Aug 2016, 14:26
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (23. Aug 2016 um 14:29 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

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

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

  Alt 23. Aug 2016, 15:32
Ich liebe es wie sich hier bei dieser Routine auf einmal alle so viel Mühe geben die Groß/Kleinschreibung zu beachten
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#19

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

  Alt 23. Aug 2016, 15:40
Ich liebe es wie sich hier bei dieser Routine auf einmal alle so viel Mühe geben die Groß/Kleinschreibung zu beachten
Das verstehe ich aber nicht

Gruß
K-H

P.S.
Laut den Sourcen ist das PosEx in D7 aus dem FastCode-Projekt.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#20

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

  Alt 23. Aug 2016, 17:00
Ich liebe es wie sich hier bei dieser Routine auf einmal alle so viel Mühe geben die Groß/Kleinschreibung zu beachten
Empfiehlt sich auch keinesfalls nach dieser Routine zu Googlen
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 16:28 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