powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Заметки о Делфи.
Модераторы: s62 
2 сообщений из 27, страница 2 из 2
Заметки о Делфи.
    #965853
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 Привилегированный пользователь
Модератор темы
В свежей Delphi 12.2 появился класс TParallelArray.

Из записи в блоге. https://blogs.embarcadero.com/faster-delphi-rtl-with-parallel-arrays-and-ordered-dictionaries/
Код: Delphi
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
program ParallelArray;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Classes,
  System.Generics.Collections,
  System.Threading,
  System.Diagnostics;

var
  A1, A2: array of Integer;
  I: Integer;
  T: TStopwatch;

begin
  try
    SetLength(A1, 100_000_000);
    SetLength(A2, 100_000_000);
    for I := 0 to High(A1) do
    begin
      A1[I] := Random(MaxInt);
      A2[I] := A1[I];
    end;

    // Warm up thread pool
    TTask.Create(
      procedure
      begin
        // empty
      end).Start;

    // Serial sorting
    T := TStopwatch.StartNew;
    TArray.Sort<Integer>(A1);
    T.Stop;
    Writeln('TArray.Sort: ', T.Elapsed.ToString);

    // Parallel sorting
    T := TStopwatch.StartNew;
    TParallelArray.Sort<Integer>(A2);
    T.Stop;
    Writeln('TParallelArray.Sort: ', T.Elapsed.ToString);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;
end.
Цитата 
[игнорируется]
If I run it on my main computer, an Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz , I get the following results, a nice 585% improvement! (output trimmed to milliseconds for readability)
Код: Delphi
1.
2.
TArray.Sort: 00:00:16.414
TParallelArray.Sort: 00:00:02.889
Я и не знал, что при помощи класса TArray из System.Generics.Collections можно так сортировать массивы. Там еще есть вот такая сортировка:
Код: Delphi
1.
class procedure Sort<T>(var Values: array of T; const Comparer: IComparer<T>); overload; static;
...
Изменено: 03.10.2024, 11:04 - s62
Рейтинг: 0 / 0
Заметки о Делфи.
    #1019961
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 Привилегированный пользователь
Модератор темы
Видел, как человек пользовался, но как-то сам не обращал внимания. Удобная вещь вверху окна редактора кода - два выпадающих окна, в левом список классов, в правом - список методов выбранного класса. И, как я понял, в нем же, если класс не выбрано - список процедур/функций (не методов классов) этого модуля.
А я всё пользовался поиском и переходом к объявлению (Ctrl+Click). Есть ещё конечно боковое окно структуры модуля, но я им редко до сих пор пользовался, обычно, когда какой-то чужой модуль открывал и искал какие-то классы, методы и т.п., так, оно у меня обычно свернуто.
В одном из текущих проектов есть большие модули с большими классами, где много методов, там эта штука удобна наверное. Всё, сейчас после обеда попробую использовать это.

p.s. Это - часть того, что называется Navigation toolbar, появилось, оказывается в Delphi XE8, я пользовался из этой панели (тулбара) переходом к разным секциям модуля.
https://docwiki.embarcadero.com/RADStudio/Athens//en/Code_Editor#Navigation_Toolbar
...
Изменено: 18.10.2024, 12:15 - s62
Рейтинг: 0 / 0
2 сообщений из 27, страница 2 из 2
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Заметки о Делфи.
Модераторы: s62 
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]