powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Скорости record
12 сообщений из 12, страница 1 из 1
Скорости record
    #39771454
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Нагородил в коде что то вроде этого

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Tzero = record
.....

End

Tfirst = record
    A:integer;
......
    D: Tzero;
    .....
End



Те получается вроде как record в record. Вложенность получилась 3—4 уровня.

И плюс все это храниться в Tlist<TZero>

И в некоторых record тоже есть поля типа TList<>

В результате по коду получается выборка по довольно длинному «пути»

И закрадывается мысль, что это значительно влияет на производительность.

Раньше с TList<> да и с record особо плотно не работал.

Так вот хочу понять плохо ли такое использование record в плане производительности или все ж нормально?
...
Рейтинг: 0 / 0
Скорости record
    #39771456
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И подозреваю, что подтормаживают именно итерации через items[i] по этим TList
...
Рейтинг: 0 / 0
Скорости record
    #39771457
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SwvИ закрадывается мысль, что это значительно влияет на производительность.
Конечно. Каждый уровень вложенности будет замедлять раз в пять, если не больше.
Поэтому об оптимизации надо думать еще до этапа проектирования.
Нет ничего важнее оптимизации.

А вместо вложенных рекордов используй вложенные массивы. С ними гораздо быстрее, чем без них. Особенно когда массивы используешь Items из TList<>.

Хорошо, что ты сюда обратился. Здесь много известных специалистов-оптимизаторов.
...
Рейтинг: 0 / 0
Скорости record
    #39771490
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра,

На последней фразе я аж поперхнулся (как раз завтракал)).
...
Рейтинг: 0 / 0
Скорости record
    #39771999
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F, )))
...
Рейтинг: 0 / 0
Скорости record
    #39772073
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И сильна ли просадка? Или от нечего делать размышляешь? Первое правило оптимизации - не оптимизировать там, где это не требуется.
Ну и слушать всяких "известных оптимизаторов" надо с бо-о-ольшим фильтром, иначе забьешь себе голову разной чухней типа "Каждый уровень вложенности будет замедлять раз в пять", так что на полезные соображения места не останется
...
Рейтинг: 0 / 0
Скорости record
    #39772093
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swv,

Думаю, ваше решение значительно быстрее будет, чем если организовать в программе подобие реляционной БД и каждый раз искать в своем списка по ключу.
...
Рейтинг: 0 / 0
Скорости record
    #39772133
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
тем более, у вас же везде будет доступ по известному (????) индексу, т.е. без поиска, и по ссылке. Куда же быстрее?
...
Рейтинг: 0 / 0
Скорости record
    #39772151
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семёнтем более, у вас же везде будет доступ по известному (????) индексу, т.е. без поиска, и по ссылке. Куда же быстрее?
Так у него же .Items[], а это гарантированное копирование. В таких случаях нужно .List[] использовать, это прямой доступ.
...
Рейтинг: 0 / 0
Скорости record
    #39772304
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SwvЗдравствуйте.

Нагородил в коде что то вроде этого

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Tzero = record
.....

End

Tfirst = record
    A:integer;
......
    D: Tzero;
    .....
End



Те получается вроде как record в record. Вложенность получилась 3—4 уровня.

И плюс все это храниться в Tlist<TZero>

И в некоторых record тоже есть поля типа TList<>

В результате по коду получается выборка по довольно длинному «пути»

И закрадывается мысль, что это значительно влияет на производительность.
Это НИКАК не влияет на производительность


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
procedure TForm5.FormCreate(Sender: TObject);
type
  TZero = record
    TZ: Integer;
  end;

  TFirst = record
    TF: Integer;
    TZ: TZero;
  end;
var
  TZ1: TZero;
  TF1: TFirst;

begin
  TZ1.TZ := 1; // выполняется за 1 инструкцию

  TF1.TF := 2; // выполняется за 1 инструкцию

  TF1.TZ.TZ := 3; // выполняется за 1 инструкцию
end;
...
Рейтинг: 0 / 0
Скорости record
    #39772458
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Premature optimization is the root of all evil (c)

TC, реализуй как придумал, измерь производительность, не устроит - тогда будет о чем поговорить, а так сивка-бурка в безвоздушном пространстве
...
Рейтинг: 0 / 0
Скорости record
    #39772534
swame2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Квейд,

На оптимизацию не влияет, но сдается что значение присвоится не туда куда надо (в список), а в копию.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Скорости record
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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