Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Как работает функция delete?  [new]
ыйдюк
Guest
Как работает функция delete? Она принимает на вход динамический массив или строку (а строка, ведь, тоже является массивом), но при удалении элементов смещает все остальные на их место или работает по-другому? Например, строку из 900 000 000 символов она обрабатывает всего за 94ms (удаляю первый символ) - как-то слишком быстро для простого смещения.
10 окт 18, 14:47    [21700572]     Ответить | Цитировать Сообщить модератору
 Re: Как работает функция delete?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29173

читай про пейджинг и то как работают менеджеры памяти

Posted via ActualForum NNTP Server 1.5

10 окт 18, 14:53    [21700577]     Ответить | Цитировать Сообщить модератору
 Re: Как работает функция delete?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 24330
procedure _UStrDelete(var S: UnicodeString; Index, Count: Integer);
var
  L, N: Integer;
begin
  InternalUniqueStringU(S);
  L := Length(S);
  if (Index >= 1) and (Index <= L) and (Count > 0) then
  begin
    Dec(Index);
    N := L - Index - Count;
    if N < 0 then
      N := 0;
    Move(PWideChar(Pointer(S))[L - N], PWideChar(Pointer(S))[Index], N * 2);
    SetLength(S, Index + N);
  end;
end;
10 окт 18, 14:54    [21700581]     Ответить | Цитировать Сообщить модератору
 Re: Как работает функция delete?  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1906
ыйдюк
Например, строку из 900 000 000 символов она обрабатывает всего за 94ms (удаляю первый символ) - как-то слишком быстро для простого смещения.
Ты не представляешь, сколько всего может произойти за 94ms!
10 окт 18, 15:58    [21700658]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить