powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi ускорение запуска приложения.
39 сообщений из 39, показаны все 2 страниц
Delphi ускорение запуска приложения.
    #40115150
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Прошу поделиться опытом, кто как решает(решил) подобную нестыковку.

В чем у меня сложности:
В приложении всего 3 формы. Но куча фреймов и работа с базой данных.Фреймы грузятся в зависимости от конфигурации, потому и исследовать даже проблематично - по одной конфикурации вроде быстро показывется, а в другой тормоза на минуту.

Картинки есть, но тащятся из ресурсов.
Еще очень много таймеров.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115155
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
найти медленные запросы и что-то с этим сделать:
1) ускорить запросы
2) отложить во времени, например по требованию пользователя
3) выполнять запросы в фоновом режиме

фаэрволл иногда замедляет выполнение запросов, но это доли секунды
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115156
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,

1. Делать логику как можно более простой, без задержек и сложных алгоритмов;
2. По возможности не обращаться к БД при запуске.
2.1. Если такой возможности нет - уменьшить кол-во запросов до минимума, а так же - оптимизировать эти запросы.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115162
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не выполнять запросы при старте ПО или при открытии формы.
Как минимум сократить кол-во тяжелых операций до минимума.
Не использовать Data-Aware компоненты.

Если это не возможно - сделать сплэш скрин с прогресс-баром во время первичной загрузки.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115171
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Сплэшскрин есть, но раздражает именно задержка старта и людям просто плевать, что пишется в сплэше.
2. Совет с запросами к базе держу в голове, но не так то просто ее решить: часть данных из базы так же является конфигурацией или влияет на порядок/видимость кнопок (например). А видимость так же зависит от размера других контролов на экране и т.п. тоже не так просто, но надо попробовать решить ребус.

сначала запускается "старая форма" (есть клиенты, которые привыкли к гвоздику и слазить с лавочки не хотят, да и техникам удобней пользоваться старой версией при настройке),
затем если в ini стоит вызов к touch-версии, то поверх нее показывается новая форма, а старая скрывается. Новая форма со старой использует часть таймеров (в любой момент опреатор может преключить на старую форму и изменить что то там)

кто нибудь пробовал такие вещи использовать:
- ассинхронные процедуры;
- threads.
- что то еще.

какие нюансы, на что обратить внимание, какие грабли при этом раскиданы? По идее должно помомочь - в thread я создавал форму, но с небольшим количеством элементов, а тут еще и запросы к базы делать.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115180
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
часть данных из базы так же является конфигурацией или влияет на порядок/видимость кнопок (например)
Эти запросы не могут выполняться минуту. И пять секунд не могут. Секунда - это самое долгое. Причем это для суммы всех запросов
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115182
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
2. Совет с запросами к базе держу в голове, но не так то просто ее решить: часть данных из базы так же является конфигурацией или влияет на порядок/видимость кнопок (например). А видимость так же зависит от размера других контролов на экране и т.п. тоже не так просто, но надо попробовать решить ребус.
Переведи всю вычитку в один большой, но быстрый запрос. Только так.
svd
в thread я создавал форму
Врёшь, это невозможно. Только через WinAPI - CreateWindow и т.д.
В общем, раз с потоками не работал - сейчас не время начинать. Для начала - переделай несколько запросов на один и ускорь его.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115223
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@_Vasilisk_

Запрос не один единственный, и не один. Вызываться могут хранимые процедуры, в которх коллега делал какието довольно сложные вычисления и от различной конфигурации могут идти от миллисекунд, до несолькох секунд.
Но это с тем, счем придется мириться. Сейчас главное выбрать пути с вероятностью улучшения.

@YuRock
ПС: должен я напоминать о правилах в форуме?
под спойлером проект для курения написанныйза 2 минуты. Выкладывать видео на youtube с процессом запуска?
Код: pascal
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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  T_FormThread = class(TThread)
  protected
    procedure execute; override;
    procedure createform;
  end;

var
  Form1: TForm1;

  Form2: TForm1;

  thd : T_FormThread;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  thd := T_FormThread.Create;
  thd.FreeOnTerminate := True;
end;

{ T_FormThread }

procedure T_FormThread.createform;
begin
  Form2 := TForm1.Create(nil);
end;

procedure T_FormThread.execute;
begin
  inherited;

  Synchronize(createform);
  while not terminated do;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if Assigned(Form2) then
   Form2.Show;
end;

end.

...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115224
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
под спойлером проект для курения написанныйза 2 минуты.
svd
Код: pascal
1.
2.
3.
4.
5.
6.
procedure T_FormThread.execute;
begin
  inherited;
  Synchronize(createform);
  while not terminated do;
end;

Я не хочу вас огорчать, но форма у вас создается в главном потоке

svd
: часть данных из базы так же является конфигурацией
svd
в которых коллега делал какие-то довольно сложные вычисления
Так вы определитесь: запрос конфигурации или сложные вычисления?
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115231
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svd
Прошу поделиться опытом, кто как решает(решил) подобную нестыковку.


1. Засечь, что именно подтормаживает
2. Ускорить это
3. Если сработало: Профит
4. Иначе: Забить либо Оптимизировать
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115236
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@_Vasilisk_,

и то, и другое. Он сейчас объяснил, что делал там перерасчет элементов старой версии и версии в которой этого небыло. Ну а выходом являются коэффициенты. По его задумке "перавый раз" может выполняться медленно, а потом уже быстро. Но этот кусок уже несуществинен - только что его перенес всекцию создания то запросу клинетов. На 3 или 4 секунды вроде лучше стало(судя по логам).
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115248
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
ПС: должен я напоминать о правилах в форуме?
под спойлером проект для курения написанныйза 2 минуты. Выкладывать видео на youtube с процессом запуска?
Ничё не понял, к чему это. Ну ладно.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115251
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
Код: pascal
1.
2.
Synchronize(createform);
while not terminated do;

Прикольно. Обе строки мне нравятся. Коротко и ясно.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115253
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тоже в основном потоке?

Код: pascal
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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  T_FormThread = class(TThread)
  protected
    procedure execute; override;
    procedure createform;
  end;

var
  Form1: TForm1;

  Form2: TForm1;

  thd : T_FormThread;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  thd := T_FormThread.Create;
  thd.FreeOnTerminate := True;
end;

{ T_FormThread }

procedure T_FormThread.createform;
begin
  if not assigned(Form2) then
  begin
    Form2 := TForm1.Create(nil);
  end;
end;

procedure T_FormThread.execute;
begin
  inherited;

  while not terminated do
      Synchronize(createform);


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if Assigned(Form2) then
 begin
   application.InsertComponent(Form2);
   Form2.Show;
 end;
end;

end.

...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115260
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
Так тоже в основном потоке?

Код: pascal
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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  T_FormThread = class(TThread)
  protected
    procedure execute; override;
    procedure createform;
  end;

var
  Form1: TForm1;

  Form2: TForm1;

  thd : T_FormThread;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  thd := T_FormThread.Create;
  thd.FreeOnTerminate := True;
end;

{ T_FormThread }

procedure T_FormThread.createform;
begin
  if not assigned(Form2) then
  begin
    Form2 := TForm1.Create(nil);
  end;
end;

procedure T_FormThread.execute;
begin
  inherited;

  while not terminated do
      Synchronize(createform);


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if Assigned(Form2) then
 begin
   application.InsertComponent(Form2);
   Form2.Show;
 end;
end;

end.


Да. И так еще прикольнее)
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115262
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svdТак тоже в основном потоке?

Чудак, может, ты уже откроешь справку по Synchronize?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115264
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
svd
Код: pascal
1.
2.
Synchronize(createform);
while not terminated do;

Прикольно. Обе строки мне нравятся. Коротко и ясно.


Потрясающий шедевр! Восхитительно! Нет слов!


Как можно что-то программировать, совершенно не понимая что ты делаешь?
Хотел было ссылку дать на свой учебник по многопоточному программированию для начинающих, но вижу, что до уровня "начинающий" ещё дойти нужно.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115280
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer

Как можно что-то программировать, совершенно не понимая что ты делаешь?
Хотел было ссылку дать на свой учебник по многопоточному программированию для начинающих, но вижу, что до уровня "начинающий" ещё дойти нужно.


Мне на этом форуме уже объяснили, что это называется известным термином "Судорожное программирование".
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115282
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd , опытом не делятся, он даётся в процессе. А на нестыковки уже указали )
DmSerХотел было ссылку дать на свой учебник по многопоточному программированию ...
Спасибо за труды!
Не читал, но рекомендую )

Но таки да, там у тебя очень много буков, а у ТС очень много таймеров - наверное, не подружатся.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115321
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тут было то? Я всё пропустил?
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115322
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57
А что тут было то? Я всё пропустил?
суровый бой подушками.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115323
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рустам слишком быстро работает)))
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115400
Dmvrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd,
Не очень понял логику построения загрузки (без потоков и т.д.) просто логику программы.
1. У тебя есть 2 интерфейса: старый и новый. Их загрузка обеспечена наличием флага в ini-файле.
2. Тогда ты вроде как должен следовать логике и загружать либо старый, либо новый интерфейс, но не 2 сразу.
3. Если человек захотел переключиться в другой интерфейс (для чего это?), то ты выгружаешь текущий и загружаешь другой.
4. Действительно загрузка конфигурации - это секунды. Ты должен загрузить меню, но не данные. Данные нужно грузить потом, когда пользователь выберет, что он хочет.
5. Если ты грузишь, например, какие-то состояния, статистику, то сделай выставку данных с обновлением на сервере через N-минут и в зависимости от готовности данных перегружай ее на клиент в сжатом виде (диаграммы, групповая инфо), в онлине свести большие объемы данных проблематично и долго.
6. Я просто желаю тебе задуматься над построением логики, а потом уже прибегнуть к потокам.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115402
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svd
Фреймы грузятся в зависимости от конфигурации, потому и исследовать даже проблематично

У Вас какое-то нелепое представление об исследовании. Судя по всему, оно заключается в сидении с умным видом и плевании в потолок в ожидании озарения.

Для исследования торможений используется несколько стандартных инструментов:

а) Профайлер. Показывает кучу полезной информации о том, какой код сколько раз выполнялся и сколько времени это заняло
б) Монитор/трассировщик. Показывает обмен между клиентом и БД и опять-таки - сколько времени какой из запросов занимал
в) Лог-файл. Для наколеночного исследования можно руками записывать начало-конец операций и видеть, сколько времени они занимали.

"Фреймы грузятся в зависимости от конфигурации" не вносит в применение этих инструментов никакой существенной специфики. Дело житейское.

rgreat
Не использовать Data-Aware компоненты.

Какие ещё нелепые советы будут? Чтобы сразу оптом.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115404
Dmvrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer

rgreat
Не использовать Data-Aware компоненты.

Какие ещё нелепые советы будут? Чтобы сразу оптом.


Data-Aware хороши, если их норм использовать, а иногда пользователи войдя в такой компонент, блокируют надолго запись, если напрямую редактировать таблицу, и блокировки..., разве не так?
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115405
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svd
Так тоже в основном потоке?

Код: pascal
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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  T_FormThread = class(TThread)
  protected
    procedure execute; override;
    procedure createform;
  end;

var
  Form1: TForm1;

  Form2: TForm1;

  thd : T_FormThread;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  thd := T_FormThread.Create;
  thd.FreeOnTerminate := True;
end;

{ T_FormThread }

procedure T_FormThread.createform;
begin
  if not assigned(Form2) then
  begin
    Form2 := TForm1.Create(nil);
  end;
end;

procedure T_FormThread.execute;
begin
  inherited;

  while not terminated do
      Synchronize(createform);


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if Assigned(Form2) then
 begin
   application.InsertComponent(Form2);
   Form2.Show;
 end;
end;

end.




ИМХО, класс TThread принес больше вреда, даже чем with.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115408
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmvrt
softwarer

пропущено...

Какие ещё нелепые советы будут? Чтобы сразу оптом.


Data-Aware хороши, если их норм использовать, а иногда пользователи войдя в такой компонент, блокируют надолго запись, если напрямую редактировать таблицу, и блокировки ..., разве не так?

вкак это... реализуется? %%
и кем ?
* при чем тут замечательные dataaware...
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115409
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmvrt
Data-Aware хороши, если их норм использовать, а иногда пользователи войдя в такой компонент, блокируют надолго запись, если напрямую редактировать таблицу, и блокировки..., разве не так?

Как минимум, это не имеет ни малейшего отношения к проблеме топикстартера (ускорение запуска приложения). Что же касается той проблемы, которую Вы описываете... кривыми руками, конечно, можно добиться и такого эффекта, и многих других замечательных последствий.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115411
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
ИМХО, класс TThread принес больше вреда, даже чем with.

Думаю, огонь принёс куда больше вреда, чем TThread и with вместе взятые.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115447
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
svd
Так тоже в основном потоке?

Код: pascal
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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  T_FormThread = class(TThread)
  protected
    procedure execute; override;
    procedure createform;
  end;

var
  Form1: TForm1;

  Form2: TForm1;

  thd : T_FormThread;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  thd := T_FormThread.Create;
  thd.FreeOnTerminate := True;
end;

{ T_FormThread }

procedure T_FormThread.createform;
begin
  if not assigned(Form2) then
  begin
    Form2 := TForm1.Create(nil);
  end;
end;

procedure T_FormThread.execute;
begin
  inherited;

  while not terminated do
      Synchronize(createform);


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if Assigned(Form2) then
 begin
   application.InsertComponent(Form2);
   Form2.Show;
 end;
end;

end.





ИМХО, класс TThread принес больше вреда, даже чем with.
Вред принес не класс TThread, со всеми его недостатками, а один его метод Synchronize
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115448
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmvrt
пользователи войдя в такой компонент, блокируют надолго запись, если напрямую редактировать таблицу, и блокировки..., разве не так?
Не знал, что запись может "блокироваться" до вызова метода Dataset.Post, который не вызывается при "заходе в такие компоненты".
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115541
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Вред принес не класс TThread, со всеми его недостатками, а один его метод Synchronize
Просто надо понимать когда следует его использовать
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115543
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmvrt,
всю программистскую жизнь пользуюсь ими
и никто из пользователей не жаловался
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115811
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmvrt
svd,
Не очень понял логику построения загрузки (без потоков и т.д.) просто логику программы.
1. У тебя есть 2 интерфейса: старый и новый. Их загрузка обеспечена наличием флага в ini-файле.
2. Тогда ты вроде как должен следовать логике и загружать либо старый, либо новый интерфейс, но не 2 сразу.
3. Если человек захотел переключиться в другой интерфейс (для чего это?), то ты выгружаешь текущий и загружаешь другой.
4. Действительно загрузка конфигурации - это секунды. Ты должен загрузить меню, но не данные. Данные нужно грузить потом, когда пользователь выберет, что он хочет.
5. Если ты грузишь, например, какие-то состояния, статистику, то сделай выставку данных с обновлением на сервере через N-минут и в зависимости от готовности данных перегружай ее на клиент в сжатом виде (диаграммы, групповая инфо), в онлине свести большие объемы данных проблематично и долго.
6. Я просто желаю тебе задуматься над построением логики, а потом уже прибегнуть к потокам.


Разумеется я не описывал детали, которые многим абсолютно не интересны, ненужны, мешают понимать логику того что требуется и правильно сформировать вопрос.
1. Совершенно верно.
2. Имено так. Форма для тач-скрина использвется операторами по месту, занимает весь экран и совершенна бесполезна, когда процессом начинают управлять удаленно - тогда и переключают на старую компактную форму.
3. Допустим текнику, пришедшему на обследование системы нужно видеть все прогрммы управления (в зависимости от конфигурации их может быть от 4х до 7ми). Я невыгружаю "новый нитерфейс", я просто переключаю видимость форм. Меню грузится на этапе запуска, потому как конфигурация в процессе работы не должна меняться. Данные тоже разные есть. Загрузка идет от разных источников с разными "накладными документами": вот эту инфу и нужно загружать во время старта- какие накладные документы активны для какго робота и какие источники загрузки привязаны к каким накладным. В тач-форме правда есть отличие - устройства загрузки имеют приоритеты.
4. Меню грузится автоматически. Но фреймы привязанные к меню сами по себе могут иметь процесс инициализации, связанный с чтением данных из базы. Пример: есть дверь для загрузки. На ней полки. Вдоль каждой полки идет лента ЛЕД-диодов. Вот задача опросом базы связать количество дверей конкретного робота (от желания клиента или факторов помещения могут меняться) с количеством полок в двери. Да еще ЛЕД управляется через DMX-512 интерфейс и получается один сегмент ленты ложится на 3 полки. Когда это нужно вычислять? Логичнее что при начальной загрузке. И таких нюансов море, под каждую конфигурацию.
5. Разумеется все, о чем ты пишешь так и сделано- графики и таблицы отдельно от котлет в загрузке явно не участвуют. В тач версии даже рассово правильней все копазывается - датасеты открываются и делают фетч только в момент, когда нажат пункт меню. Да и то, где требуется отображать в графике или гриде. А чаще всего исполюзуется асинхронный доступ через thread порции данных - нужно пользователю еще, тогда следующая порция и т.д., и т.п.
6. Цель этого топика и была задуматься над построением логики загрузки. Ведь загрузка подобных процессов в линейных режимах приводит к тормозам. И вопрос был о том, кто какие методы использует при загрузке. Судя по посыпавшемуся флэйму ничего нового в этом направлении нет. Но спасибо YuRock, а точнее Дмитрию Сибирякову - ткул носом в документацию, где точно описано то, что нужно. В первом изменении на одной заведомо "долгогрузимой" конфигурации, без оптимизаций запросов удалось сократить загрузку на 25 секунд. Не все, конечно, так гладко, но покрайней мере можно показать прототип и сформировать требование, в каком направление нужно менять процесс инициализации приложения.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115852
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Флейм посыпался, потому что вопрос сформулирован черте-как. Вместо точного и тщательного описания процесса и условий - какое-то нубское нагромождение типа "У меня стоит фотошоп и есть беспроводная мышка, почему виндовс долго грузится?"
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40115921
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Флейм посыпался, потому что вопрос сформулирован черте-как. Вместо точного и тщательного описания процесса и условий - какое-то нубское нагромождение типа "У меня стоит фотошоп и есть беспроводная мышка, почему виндовс долго грузится?"

Типичный gigo. Garbage в виде непонятно чего на входе вместо внятного описания проблемы. Garbage в виде возможно неточных рекомендаций на непонятно что описанное.
Общие рекомендации уже даны: 1. подключить профайлер и посмотреть таки в чем проблема на старте. 2. вынести нормально код старта в доп поток вместо этих безобразий с синхронизацией.
Вообще, ничего личного, но мне кажется что после такого кода стоит присмотреться или к другой профессии или хотя бы к другому языку :) В Питоне, например, проблем с потоками не будет, он там всегда один

procedure T_FormThread.execute;
begin
while not terminated do
Synchronize(createform);
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40116003
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon
В Питоне, например, проблем с потоками не будет, он там всегда один

Ряды эспертов ширились...
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40116044
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

я к сожалению не эксперт по Питону, каюсь. однако вот везде пишут "Многопоточность в Python-это своего рода миф." я просто склонен верить:

Тем не менее, в CPython (наиболее распространенная реализация Python - та, которую вы получаете, нажав кнопку загрузки на https://python.org или через менеджер пакетов), существует эта злая необходимость, называемая глобальной блокировкой интерпретатора (GIL). Чтобы динамическое управление памятью в CPython работало правильно, GIL предотвращает одновременное выполнение кода Python несколькими потоками.

Если вы используете CPython, настоятельно рекомендуется использовать вместо этого модуль многопроцессорной обработки. Вместо того, чтобы запускать несколько потоков, он запускает несколько процессов (каждый со своим собственным GIL, поэтому все они могут выполняться одновременно).

Где тут с такого рода рекомендациям многопоточность - для меня загадка. Может вот твердый знак, как настоящий эксперт, расскажет всему миру, что они все ошибаются и с легкостью запустит хотя бы сотню потоков. Лучше с кодом.
...
Рейтинг: 0 / 0
Delphi ускорение запуска приложения.
    #40116052
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет потоков - нет проблем (с) команда Хромиума
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi ускорение запуска приложения.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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