Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#44

AW: Anzahl eines Zeichens im String ermitteln

  Alt 12. Jul 2018, 19:38
Wenn es wirklich auf die Performance ankommt, blieben noch spezielle CPU Instruktionen wie repne scasb bzw. repne scasw. Die habe ich auch schon benutzt, aber das macht nur Sinn, wenn es wirklich Not tut. Eben wegen Portabilität usw.
Ich habe mal Deinen Vorschlag versucht umzusetzen.
Ich würde mich über eine besser funktionierende Version als diese hier freuen, mein assembler ist doch stark eingerostet.
Vielleicht ist Code auch korrekt nur Ausführung ist recht langsam weil ich ein PChar rauswerfe wo man mit Length() die Treffer abfragt.
Delphi-Quellcode:
function StrScanAsm(Str: String; Chr: Char): PChar; assembler;
asm
     OR EAX,EAX
     JZ @@2
     PUSH EDI
     MOV ECX,[EAX-4]
     MOV EDI,EAX
     MOV EAX,EDX
     REPNE SCASB
     MOV EAX,0
     JNE @@1
     MOV EAX,EDI
     DEC EAX
@@1: POP EDI
@@2:
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat