Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: Komandor, 15:49 31-03-2024
Samotek

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
Note  This function has been superseded by the LoadImage function.  

Понятно! Спасибо!

Всего записей: 2448 | Зарегистр. 18-05-2005 | Отправлено: 00:53 19-03-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SKIA for Delphi обновилась до 5.0 уже, есть кто использует? Если кто не в курсе, то это гугловский 2D рендер движок, кроссплатформенный, в дельфе может полностью заменить собой обезьяну в FMX. В VCL полностью доступна ее канва, кодеки картинок, свгшек, анимах и прочее, прочее. Быстрее обезьяны. Хотелось бы отзывов.
 
Вопрос тем, кто пишет на C++ билдере - вижу что компилятор clang 5.0.2 (древний конечно как ...) В офф.документации заявлена поддержка аж AVX2. В бидере в доп.опциях ни один доп.параметр кроме -ffast-math прописать не дает. Как у билдера обстоят дела с кодегеном вообще? Я понимаю, что RTL там юзается чисто паскалевский, но это ж не повод глушить родную возможность компилятора?...

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 23:27 26-03-2023 | Исправлено: Sulphide, 05:14 27-03-2023
w341kj

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
 
Да накой это нужно тем более столько весит что ... капец.
Не знаю как там оно в 5-той версии, но последняя 4-тая плохо работает со встройкой,
тормозит, подлагивает, а где-то и вовсе не работает. Ещё и видяху ей подавай, понимаешь

Всего записей: 157 | Зарегистр. 06-03-2021 | Отправлено: 09:00 27-03-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
w341kj
Посмотрел, в качестве обезьяны прям очень хорошо работает. Правда перекрывает почему-то правую границу окна в win11 по крайней мере - баг видимо. Ну и одна доп. dll'ка в 20мб к екзешнику в 2к23 - это ничто конечно, если говорить про объёмы. В vcl - прям плохо работает, одна канва тормозит и если добавить 2ю, то такое ощущение, что 60фпс будут делиться на обе канвы. Хотел использовать SKIA для канвы для отрисовки компонента типа сглаженных кривых как у фотошопа, подобный компонент есть в Imagen, но использует Direct2D канву в последних версиях, что совсем не вариант.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 05:40 28-03-2023
HekTo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А никто больше в 11.3 не сталкивался с мелкими подвисаниями среды по каждому чиху?

Всего записей: 186 | Зарегистр. 30-09-2003 | Отправлено: 15:10 29-03-2023
Samotek

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HekTo

Цитата:
А никто больше в 11.3 не сталкивался с мелкими подвисаниями среды по каждому чиху?

То, что у меня -вряд ли можно назвать "мелкими" - практически каждый раз после старта, и даже не понятно что явилось инициатором, то ли сохранение текста, то ли первая компиляция, среда виснет просто намертво. Диспетчером снимаешь, запускаешь, после этого работает нормально.

Всего записей: 2448 | Зарегистр. 18-05-2005 | Отправлено: 15:48 29-03-2023
vez



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А никто больше в 11.3 не сталкивался с мелкими подвисаниями среды по каждому чиху?

У меня уже месяца три работает без проблем. (начиная с бет).
Проблемы могут быть со старыми плагинами, емба довольно сильно помордовала редактор.

Всего записей: 561 | Зарегистр. 02-06-2003 | Отправлено: 16:07 29-03-2023
VadimShvarts

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
All
D11 Distiller (version 45)
Обновление XE Distiller для Delphi 11.3 Alexandria
 
Исходники (Build 45),  
исполняемый модуль (Build 45)

Всего записей: 75 | Зарегистр. 03-11-2006 | Отправлено: 15:46 30-03-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дело было вечером, делать было нечего...
Решил посмотреть скорость математики везде где есть =)
 
формула максимально простая, цикл на миллион итераций:
rs := System.Sin(y) * System.Cos(y) + System.Math.Log2(y) + System.Math.Tan(y) + System.ArcTan(y) + System.Ln(y) + System.Math.Log2(y) + rs;
 
Да, Log2 - 2 раза, так полуилось, не стал везде переделывать))
Первое значение - миллисекунды, второе результат для контроля.
 
Delphi и FPC с директивой {EXCESSPRECISION OFF}, по возможности везде максимальные оптимизациии включены.
FastMath - только с single работает.
MSVC++ в Delphi использовалась в виде dll'ки с нужными мат. функциями из msvc rtl.
В дотнет только Double имеется.
 
К слову у FPC результат процентов на 10-15 был еще хуже, до того как я перекомпилил его rtl с AVX2. Ну и дельфи я думал будет прям хуже, он прям норм, msvc++ конечно вне конкуренции. Ну и single лучше вообще не использовать, в этом я убеждаюсь уже не в первый раз, точность никакая + никак не быстрее double выходит. Это результаты 3700х. 12500 на double дает почти двухкратный прирост.
 
У билдера закралалась ошибка (одна из функций была прописана с маленькой буквы), если использовать все функции с большой буквы (Delphi RTL), то оба результата 100-110. Если все функции с маленькой (sin/sinf, cos/cosf), то результат вообще улетает до целой секунды расчетов. Что за беда я не знаю. Хотя и то и то ссылается на дельфовый rtl по идее.
 
 

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 18:38 02-04-2023 | Исправлено: Sulphide, 03:44 03-04-2023
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
В чем прикол измерять скорость сложения? Опции оптимизации на библиотечные функции не действуют же.

Всего записей: 439 | Зарегистр. 15-02-2006 | Отправлено: 00:02 03-04-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av
А я и не сложение тестировал, а именно библиотечные функции. Ибо какой смысл в каких-то директивах оптимизации или ручной оптимизации, если библиотечные функции будут сводить все потуги к нулю. Да и просто интересно было что лучше использовать, ибо для себя я полностью заменил основные мат.функции своей же дллкой из visual studio.
 
ps Кстати Clang в VS дает еще лучший результат на ~10% относительно родного rtl вижуал студии.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 01:26 03-04-2023 | Исправлено: Sulphide, 01:54 03-04-2023
BugDigger



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Векторные и матричные операции попробуйте.
Ну и оптимизацию циклов (где цикл в бинарном коде выполняется векторными операциями).
 
Кстати сказать, "просто" цикл с вычислением того оператора, который вы показали, современные компиляторы вполне в состоянии вычислить на этапе компиляции и сразу подсунуть результат.

Всего записей: 176 | Зарегистр. 14-06-2007 | Отправлено: 06:46 03-04-2023 | Исправлено: BugDigger, 06:51 03-04-2023
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide

Цитата:
Ибо какой смысл в каких-то директивах оптимизации или ручной оптимизации, если библиотечные функции будут сводить все потуги к нулю.

Например, Free Pascal имеет возможность использовать векторные инструкции. Правда, когда я пробовал это тестировать, словил ошибку компилятора  Но это было давно.
 

Цитата:
Кстати Clang в VS дает еще лучший результат на ~10% относительно родного rtl вижуал студии.

Можно еще и Oxygene попробовать в нативном режиме, у него LLVM под капотом.

Всего записей: 439 | Зарегистр. 15-02-2006 | Отправлено: 11:29 03-04-2023 | Исправлено: kaz_av, 12:01 03-04-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BugDigger

Цитата:
Кстати сказать, "просто" цикл с вычислением того оператора, который вы показали, современные компиляторы вполне в состоянии вычислить на этапе компиляции и сразу подсунуть результат.  

Ну судя по результатам, тут ни один из 4х не справился с этим, иначе время расчета было бы менее миллисекунды. Хотя я не пробовал родное решение в Visual Studio, ибо это уже не на 5 минут))) Ну и я же специально сделал так чтобы каждая последующая итерация цикла использовала результат предыдущей итерации. Соответственно ни один компилятор такое не развернет и не сократит.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 16:31 03-04-2023 | Исправлено: Sulphide, 19:35 03-04-2023
stanzdor



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
проверьте пожалуйста, скомпиленный код на 11.2 и 11.3:
https://mega.nz/file/uuY3CYDS#DEb8FBI9bSVKTB_sUjUw38HXCIPo5bE9DZuqApk8D3M
 
на винде у меня на 11.2 скорость вывода около 0-1 мс, на 11.3 около 5-6 мс.
очень заметно на андроид устройствах, прям жуткие тормоза. кажется что-то с синхронизацией
 
если не туплю, не мог бы кто указать эмбе на это?
 

Код:
 
 
procedure testpaint;
var
  fStopWatch: TStopwatch;
  WorkTime  : cardinal;
  bmp       : TBitmap;
 
begin
 
  bmp:= TBitmap.Create;
  bmp.SetSize(trunc(screen.Width),  trunc(screen.Height));
  bmp.Canvas.Fill.Color:= TAlphaColorRec.Cyan;
 
  while true do begin
 
     bmp.Canvas.BeginScene;
     bmp.Canvas.Clear(TAlphaColorRec.Teal);
     bmp.Canvas.Font.Size:= 100;
     bmp.Canvas.FillText( RectF(0,0, bmp.Width, bmp.Height), TimeToStr(time) + '  ms: '+IntToStr(WorkTime), false, 1, [], TTextAlign.Center, TTextAlign.Center);
     bmp.Canvas.EndScene;
 
     // засекаем время
     fStopWatch.Reset; fStopWatch.Start;
 
     TThread.Synchronize( nil, procedure begin
 
       testForm.Image1.BeginUpdate;
       bmp.Canvas.Lock;
       testForm.Image1.Bitmap.Assign(bmp);
       bmp.Canvas.UnLock;
       testForm.Image1.endUpdate;
 
     end);
 
     fStopWatch.Stop;
     WorkTime:= Trunc(fStopWatch.Elapsed.TotalMilliseconds);
 
     sleep(100);
 
  end;
 
  bmp.Free;
 
end;
 
procedure TtestForm.FormCreate(Sender: TObject);
begin
 
  Image1.Align:= TAlignLayout.Client;
  Image1.WrapMode:= TImageWrapMode.Fit;
 
  TThread.CreateAnonymousThread(procedure begin
     testpaint;
  end).Start;
 
 
end;
 

Всего записей: 594 | Зарегистр. 12-04-2004 | Отправлено: 15:13 15-04-2023 | Исправлено: stanzdor, 16:13 15-04-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stanzdor
Похоже на принудительную синхру отрисовки. У меня в твоем варианте 7мс на 11.3
Если сделать так, как я обычно это делаю:

Код:
 
var
WorkTime  : Int64;
 
fStopWatch := TStopWatch.StartNew;
...
 
fStopWatch.Stop;
WorkTime:= fStopWatch.ElapsedMilliseconds;
 

То начинает болтаться в районе 14-16мс = 60фпс.
 
плюс если сделать так:

Код:
 
     TThread.Synchronize( nil, procedure begin
 
//       testForm.Image1.BeginUpdate;
//       bmp.Canvas.Lock;
       testForm.Image1.Bitmap.Assign(bmp);
//       bmp.Canvas.UnLock;
//       testForm.Image1.endUpdate;
       testForm.Image1.Repaint;
 
     end);
 

И локи перенести только наверх, где текст рисуется (они ведь только там нужны по факту), то вообще менее миллисекунды все занимает. Но на андроиде и так и так какая-то шляпа происходит - все моргает, мерцает и падает.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 00:36 17-04-2023 | Исправлено: Sulphide, 01:09 17-04-2023
stanzdor



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide, ну у меня не падает на андроид, но на том же mibox с апи8 вывод на image в 11.3 где то 90мс,  а на 11.2  в районе 17. у меня вывод типа плавающего текста и это сильно заметно.

Всего записей: 594 | Зарегистр. 12-04-2004 | Отправлено: 20:03 17-04-2023 | Исправлено: stanzdor, 22:28 17-04-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stanzdor
Ну вот есть подозрение, что рисование в fmx особенно из основного потока сильно завязано на герцовку монитора. А на андроиде я смотрел на mi10t там 144 герца и во время моргания (белый фон с основной картинкой моргают) видно что оно как бы пытается в менее 10мс но уже не тянет. Там же у них текстура туда-сюда гоняется по шине (в случае с ПК), на андроиде скорее всего гоняется из основной памяти в память GPU. Сам вот жду не дождусь массового pci-ex 5.0, потому что в одном проекте прям очень сильно завязано на стриминг огромных текстур (от 4х4k) в память GPU и пока что по тестам если брать pci-ex 3.0 x8 и x16, то прям как есть fps у меня ровно в 2 раза сразу поднимается. С pci-ex 4.0 x16 еще больше текстурки можно будет кидать 8х8k например, ну и чтобы совсем убрать это бутылочное горлышко pci-ex 5.0 прям совсем хорошо будет.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 02:00 18-04-2023
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stanzdor
Зачем делать bmp.Canvas.Lock/UnLock если в testForm.Image1.Bitmap.Assign(bmp) канва пересоздается?
Что касается задержки,то она наверно возникает из-за фикса этого бага: https://quality.embarcadero.com/browse/RSP-38418
 
Sulphide
Гонять байты из видяхи в оперативку и назад только для того, чтобы поменять формат картинки или вообще сделать копию - это максимально тупой подход. Он хорош только тем, что можно писать код как во времена Вин98, и не надо переучиваться. Современные графические апи позволяют сделать все это прямо в памяти видеокрты, причем намного быстрее чем это сделает процессор.
Создал эмбаркадеровцам баг репорт: https://quality.embarcadero.com/browse/RSP-41451 (сделал демку на основе кода stanzdor).

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 15:30 18-04-2023 | Исправлено: Frodo_Torbins, 15:57 18-04-2023
Sulphide

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
А как еще можно сделать, не гоняя туда-сюда (хотя в этом случае только туда в GPU) битмапы, например когда необходим именно процессорный доступ к цветовому пространству bmp'шки (ScanLine), но при этом сама bmp'шка рисуется видюхой как в fmx? Только так и получается - держим копию в оперативе, даем доступ через ScanLine, после загружаем bmp обратно в память GPU, чтобы отрисовать. Больше никак, соответственно тоже самое касается и всяких bitblt, stretchblt и прочего, все делается в оперативе и отправляется в GPU, чтобы обезьяна это все нарисовала используя GPU.  
 
ps у меня в проекте кидаются декодированные CPU кадры видео и картинок как есть - куча YUV и RGB форматов 8-16 бит на канал. Аппаратный декодер не подходит, т.к. имеет кучу ограничений по размерам сторон, версии h264, h265, AV1, их профилям и т.д. и т.п. + все же аппаратный декодер не рассчитан на большие нагрузки, он рассчитан на то чтобы сэкономить электроэнергию, когда юзер "пырит киньшик", попивая кофе. Например, ни один аппаратный декодер не сделает 8192х8192 видео аппаратно. В реальном времени - никак. А вот процессор (16-32-64 ядра и т.д.) легко и даже несколько одновременно, но надо это все кидать потом в GPU. Потом GPU делает из всего этого RGB нужный, цвет.кор, прочие преобразования и показывает. Так что пока так.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 21:15 18-04-2023 | Исправлено: Sulphide, 21:30 18-04-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru