Size: a a a

2020 December 15

SB

Sergey Bodrov in Delphi & Lazarus
А попытки оптимизировать обращения к аллокатору памяти, к свойствам шрифтов и стилей дают считанные проценты ускорения. Если быть точным, из 150 000 тактов Paint() больше 100 000 уходит на непосредственно отрисовку на TCanvas.
источник

Y

YuS in Delphi & Lazarus
Ты TIpHtmlPanel как отдельным компонентом, для своих целей, пользуешься?
источник

k

kirillmaster4 in Delphi & Lazarus
Sergey Bodrov
А попытки оптимизировать обращения к аллокатору памяти, к свойствам шрифтов и стилей дают считанные проценты ускорения. Если быть точным, из 150 000 тактов Paint() больше 100 000 уходит на непосредственно отрисовку на TCanvas.
Это да. По тестам так и получается
источник

SB

Sergey Bodrov in Delphi & Lazarus
YuS
Ты TIpHtmlPanel как отдельным компонентом, для своих целей, пользуешься?
Нет, просто вижу явные тормоза и попытался исправить. Надо было сразу профайлером смотреть, а я по привычке грешил на аллокатор и всякие необязательные операции.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Нет, просто вижу явные тормоза и попытался исправить. Надо было сразу профайлером смотреть, а я по привычке грешил на аллокатор и всякие необязательные операции.
Надо было сразу профайлером смотреть, а я по привычке

О - оптимизация!
источник

k

kirillmaster4 in Delphi & Lazarus
kirillmaster4
Oberon интересует, однако инфраструктура очень не развитая, да и мульти-оконность в приложениях далеко не везде нужна.
Кто-нибудь из этого чата вообще пробовал Oberon? Есть ООП и компонентная модульность.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Нет, просто вижу явные тормоза и попытался исправить. Надо было сразу профайлером смотреть, а я по привычке грешил на аллокатор и всякие необязательные операции.
каким профайлером, кстати?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Alexey Shumkin
каким профайлером, кстати?
Для Delphi 7 я обычно пользуюсь SamplingProfiler. А на Lazarus по идее нужен Valgrind но я им еще не пробовал пользоваться.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Для Delphi 7 я обычно пользуюсь SamplingProfiler. А на Lazarus по идее нужен Valgrind но я им еще не пробовал пользоваться.
так а тормоза справки - это ж про Лазарус?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Alexey Shumkin
так а тормоза справки - это ж про Лазарус?
Да.
источник

AS

Alexey Shumkin in Delphi & Lazarus
но использовал профайлер ))) но не valgrind...
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Alexey Shumkin
Всё это синтетика :)
В обычном проекте, где есть  обращения к внешним устройствам (диски,... сетевые задержки, например)  - ниачём
это как раз не синтетика. обычные 'счетные' алгоритмы рейндж чек у нас замедляет в 3-4 раза. работать невозможно
источник

DB

Dmitry Belkevich in Delphi & Lazarus
не стоит, в общем, и тебе, Леша в том числе, говорить за все случаи )
источник

DB

Dmitry Belkevich in Delphi & Lazarus
и, да, рейндж чек добавляет весьма заметную обвязку в процессорный код
источник

AS

Alexey Shumkin in Delphi & Lazarus
Dmitry Belkevich
не стоит, в общем, и тебе, Леша в том числе, говорить за все случаи )
а я за все и  не говорил
источник

AS

Alexey Shumkin in Delphi & Lazarus
если нагрузка CPU bound, то вероятно, будет заметное замедление
если IO bound - тут хз...
источник

AS

Alexey Shumkin in Delphi & Lazarus
я это и сказал выше
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Alexey Shumkin
а я за все и  не говорил
"Всё это синтетика" твое? :) так вот. говорил. и не всё
источник

AS

Alexey Shumkin in Delphi & Lazarus
YuS
program project2;

{$mode objfpc}{$H+}

uses
 Classes,
 SysUtils;

{$R+}
const
 MAX_COUNT = 10000000;
var
 i: integer;
 j: integer;
 arr: array [0..MAX_COUNT] of integer;
 arr2: array of integer;
 sc, ec: QWord;
begin
 setlength(arr2, MAX_COUNT + 1);
 sc := GetTickCount64;

 for i := 0 to MAX_COUNT do
 begin
   arr[i] := i - 1;
   arr2[i] := arr[i];
   j := arr[2];
 end;
 ec := GetTickCount64;
 writeln(j);
 writeln(ec - sc);
 readln;
end.
. вот это всё - синтетика
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Alexey Shumkin
. вот это всё - синтетика
я же говорю. что вот это - фактически куски нашего реального кода. который начинает тормозить на расчетах до такой степени, что сильно влияет на поведение программы:
юзерам работать невозможно. тестировщики начинают писать репорты

в коде тупо последовательный доступ к большим массивам. вот как в коде + расчет
источник