Есть ли какая-либо сопоставимая функция, например Pos, которая не чувствительна к регистру в D2010 (unicode)?
Я знаю, что могу использовать Pos (AnsiUpperCase (FindString), AnsiUpperCase (SourceString)), но это добавляет много времени обработки, преобразовывая строки в верхний регистр каждый раз, когда вызывается функция.
Например, в цикле 1000000 Pos занимает 78 мс, а преобразование в верхний регистр занимает 764 мс.
str1 := 'dfkfkL%&/s"#<.676505';
for i := 0 to 1000000 do
PosEx('#<.', str1, 1); // Takes 78ms
for i := 0 to 1000000 do
PosEx(AnsiUpperCase('#<.'), AnsiUpperCase(str1), 1); // Takes 764ms
Я знаю, что для повышения производительности этого конкретного примера я могу преобразовать строки в верхний регистр сначала перед циклом, но причина, по которой я ищу функцию Pos-like, которая не чувствительна к регистру, заключается в замене один из FastStrings. Все строки, в которых я буду использовать Pos, будут разными, поэтому мне нужно будет преобразовать каждый из них в верхний регистр.
Есть ли какая-либо другая функция, которая может быть быстрее, чем Pos +, преобразовать строки в верхний регистр?