Новое Распределяем каналы MAX по категориям и территориям. Читать новость

PascalABC.NETSearchValues + .NET 10:

PascalABC.NETSearchValues + .NET 10:

Продолжаем знакомиться с возможностями современного .NET.

Метод IndexOfAny существовал и раньше. Новая идея здесь — SearchValues<T>.

Он позволяет один раз подготовить и оптимизировать набор значений, а затем использовать его во множестве поисков.
uses System.Buffers;

begin
var chars := SearchValues.Create(
'abcdefghijklmnopqrstuvwxyz0123456789'.ToCharArray
);

var texts := [
'***PascalABC.NET',
'---compiler',
'...12345',
'___algorithm'
];

foreach var text in texts do
begin
var p := text.AsSpan.IndexOfAny(chars);
Println(text,p);
end;
end.
Здесь набор букв и цифр создаётся только один раз:
var chars := SearchValues.Create(...);
А затем тот же SearchValues используется для поиска в разных строках.

Внутри .NET может выбрать для такого набора специальное представление и использовать оптимизированные алгоритмы, включая SIMD-векторизацию.

Поэтому SearchValues особенно полезен, когда:
• один и тот же набор символов используется много раз;
• набор достаточно большой;
• нужно быстро обрабатывать большие объёмы текста.

Например, при разборе текста, лексическом анализе, поиске разделителей, проверке допустимых символов и обработке протоколов.

Идея простая:
обычный IndexOfAny — нашли один раз;
SearchValues — один раз подготовили набор → много раз быстро ищем.
Просмотры: 60
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти