Es geht auch noch schneller
Zeitersparnis ist je nach Stringlänge sehr hoch:
Delphi-Quellcode:
function StrToArray(Value: String): TCharArray;
var
L : Integer;
begin
L := Length(Value);
SetLength(Result, L);
if (L > 0) then
Move(PChar(Value)^, Result[0], L * SizeOf(Char));
end;
Hier mal ein kleiner Benchmark (QuadCore Q6600):
Code:
Rounds: 10000000
Length: 21
naive: 2428ms
optimized: 1128ms
Time Saved: 54%
Length: 168
naive: 9179ms
optimized: 1831ms
Time Saved: 80%
Eine CountDiverseChars-Methode kommt auch bald
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)