You are here: Home > Fastcode project > Ansi StringReplace Challenge
Ansi StringReplace Challenge
The objective is to build the fastest partiel replacement for RTL StringReplace.
AnsiStringReplace is a replacement for the RTL StringReplace function, but
valid for AnsiStrings only.
function StringReplace(const S, OldPattern,
NewPattern: AnsiString; Flags: TReplaceFlags): AnsiString;
StringReplace
replaces occurrences of the substring specified by OldPattern with the substring
specified by NewPattern. S is the source string, whose substrings are
changed. OldPattern is the substring to locate and replace with NewPattern.
NewPattern is the substring to substitute for occurrences of OldPattern. Flags
is a set of flags that govern how StringReplace locates and replaces occurrences
of OldPattern. If Flags does not include rfReplaceAll, StringReplace only
replaces the first occurrence of OldPattern in S. Otherwise, StringReplace
replaces all instances of OldPattern with NewPattern. If the Flags parameter
includes rfIgnoreCase, The comparison operation is case
insensitive.
Rules
It is not allowed to call any Fastcode functions not created by the function
owner.
Tables of results
Tables of results - blind challenge
Target | Function | Author | Speed up over RTL |
P4 Prescott | StringReplaceJOH_IA32_3 | John O'Harrow | 16,2 |
P4 Northwood | StringReplaceJOH_IA32_3 | John O'Harrow | 16,7 |
Pentium M Dothan | StringReplaceJOH_IA32_4 | John O'Harrow | 14,5 |
Pentium M Banias |
StringReplaceJOH_IA32_3 | John O'Harrow | 14,7 |
AMD 64 | StringReplaceJOH_IA32_3 | John O'Harrow | 11,1 |
Athlon XPOpteron | StringReplaceJOH_IA32_3 | John O'Harrow | 12,3 |
Blended | StringReplaceJOH_IA32_3 | John O'Harrow | 14,1 |
RTL Suggestion | StringReplaceJOH_IA32_4 | John O'Harrow | 13,8 |
Pascal | StringReplaceJOH_PAS_4 | John O'Harrow | 13,8 |