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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

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, 18:58 18-03-2022
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
Представьте битмэп, как двумерный (или даже одномерный) массив байт. Вместо FillRect используйте setmem.
Вместо Rect.Contains(TPoint) напишите свою функцию попадания координаты в окрестность точки.
Если массив координат точек будет упорядочен, то можно оптимизировать поиск ближайшей точки сетки (например, методом половинного деления искать только по оси X, а затем, после нахождения первой Х, попадающей в заданный отрезок, двигаться по оси Y)

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 14:15 07-11-2016
Sulphide

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

Цитата:
Sulphide  
Представьте битмэп, как двумерный (или даже одномерный) массив байт. Вместо FillRect используйте setmem.  
Вместо Rect.Contains(TPoint) напишите свою функцию попадания координаты в окрестность точки.  
Если массив координат точек будет упорядочен, то можно оптимизировать поиск ближайшей точки сетки (например, методом половинного деления искать только по оси X, а затем, после нахождения первой Х, попадающей в заданный отрезок, двигаться по оси Y)

Тут уже появилась необходимость писать почти аналог ImmersiveDisplayPRO, поэтому в любом случае придется переписать на GL. А с битмапами через scanline (vcl) и Map(TMapAccess.Read/Write, bitdata) (fmx) работал уже.. это не проблема. За советы спасибо В любом случае поиск точек - это не критичная по скорости операция. Ну а канва, как не крути, не годится для работы с графикой таких масштабов, даже если ты сам будешь делать все быстро, то рисование на форму будет медленным.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 23:49 07-11-2016 | Исправлено: Sulphide, 23:56 07-11-2016
MBo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide
6000 квадратиков нарисовать быстро -  не проблема и при использовании GDI.  
Однако я обратил внимание, что ты используешь TImage, а он для динамических картинок совершенно не годится.

Всего записей: 36 | Зарегистр. 02-09-2004 | Отправлено: 18:25 09-11-2016 | Исправлено: MBo, 18:26 09-11-2016
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, я не понял, а почему у TGrid нет события OnDblClick? (Berlin 10.1, Multi-device application)

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 20:12 09-11-2016
LadyOfWood

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

Цитата:
Выходит что отрисовка медленная очень. Этож получается я рисую в битмап 6000 квадратиков, прежде очищая его, заодно заполняю массивчик TRec'ами с шириной и высотой  

Для таких операций с графикой Graphics32 смотрится очень хорошо, хоть он в последенее время практически и не развивается.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 22:02 09-11-2016
MBo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проведём эксперимент. Рисуем шестьдесят тысяч прямоугольников разного цвета и размера на битмап указанного размера. На моей машине (видеокарта встроенная) получается
 
60000 rects time 833 ms flow 6.55 GB/sec
 
т.е. поток данных составляет примерно половину пропускной способности моей памяти (14 GB/Sec), и для закраски большими пр-ками скорость ограничена ею.
 
Для размеров прямоугольников в 10 раз меньше объём данных меньше в 100 раз, и получается
 
time 79 ms flow 0.73 GB/sec
 
причём здесь половину времени занимает уже установка цвета кисти и генерация случайных чисел.
 
Для 6000 прямоугольников макс.размера 30 время укладывается в 10 миллисекунд, за секунду генерируются и отрисовываются 145 кадров.
 
 

Код:
 
var
  b: TBitmap;
  n, i, l, t, r, bt, maxsize: Integer;
  dt, sum: Int64;
begin
  b := Tbitmap.Create;
  b.Width := 3840;
  b.Height := 2160;
  n := 60000;
  maxsize := 300;
  b.PixelFormat := pf32bit;
  sw := TStopWatch.Create;
  sw.Start;
  sum := 0;
  for i := 1 to n do begin
    l := Random(3840 - maxsize);
    t := Random(2160 - maxsize);
    r := l + Random(maxsize);
    bt := t + Random(maxsize);
    sum := sum + (r - l + 1) * (bt - t + 1) * 4;
    b.Canvas.Brush.Color := Random($1000000);
    b.Canvas.FillRect(Rect(l, t, r, bt));
  end;
  Canvas.Draw(0, 0, b);
  dt := sw.ElapsedMilliseconds;
  Memo1.Lines.Add(Format('%d rects time %d ms flow %4.2f GB/sec', [n, dt, sum/1000000000/dt*1000]));
  b.Free;
 
 
 

Всего записей: 36 | Зарегистр. 02-09-2004 | Отправлено: 07:31 10-11-2016 | Исправлено: MBo, 07:33 10-11-2016
StalkerSoftware



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

Цитата:
У меня есть старые проекты под Delphi 7. На некоторых ПК, недетерминированно (иногда) вылезает Access Violation. Как я понимаяю, с EurekaLog лог можно понять на каком месте происходит вылет?

У Вас ситуация была аналогичная моей несколько лет назад. У меня тоже в программе случайным образом лезли AV и я ни как не мог их выловить. И только благодаря установки EurekaLog я смог их найти в течении дня и все исправить (проблема оказалась в одной из моих библиотек). Так что теперь данная библиотека у меня mustmust have, чего и Вам советую.
 
И еще важный момент: старайтесь освобождать объекты не через метод Free, а с помощью процедуры FreeAndNil - это Вас в большинстве случаев избавит от непонятных AV - убедился на собственном примере.

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 09:34 10-11-2016 | Исправлено: StalkerSoftware, 09:37 10-11-2016
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare
Multi-device application - это FMX а не VCL. Там все по-другому, хоть и выглядит похоже.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 13:50 10-11-2016
ArturAD

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

Цитата:
почему у TGrid нет события OnDblClick?

Выпилили из-за поддержки Multi-device application. Обещали в след. версии сделать.

Всего записей: 49 | Зарегистр. 01-10-2013 | Отправлено: 13:57 10-11-2016
Sulphide

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

Цитата:
Проведём эксперимент.

Это все хорошо, потому что ваш битмап не рисуется на форму в самом конце.
А пардон не увидел canvas.draw в конце.
Кстати, у меня ваш код не так радужно выглядит.
~1500ms 3,60Gb/s
 
fx8370 + gtx970

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 19:16 10-11-2016 | Исправлено: Sulphide, 19:30 10-11-2016
MBo

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

Цитата:
 
Кстати, у меня ваш код не так радужно выглядит.  
 ~1500ms 3,60Gb/s  
 fx8370 + gtx970
 

 
Мой тест был на i5-4670, у него производительность на одно ядро в полтора раза выше,чем у fx83xx
 
Вот на Celeron 1840:
time 1155 ms flow 4.70 GB/sec
 
Собственно, интересно понять, какие параметры теста будут ближе к реальной задаче.

Всего записей: 36 | Зарегистр. 02-09-2004 | Отправлено: 19:50 10-11-2016
Sulphide

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

Цитата:
Мой тест был на i5-4670, у него производительность на одно ядро в полтора раза выше,чем у fx83xx  

Давайте сделаем так, чтобы понять куда упирается производительность. Прогоните пожалуйста тест винрар без многопоточности. Там и посмотрим. У меня он дает 1523.
Возможно дело и во встроенной видеокарте или наоборот дискретной.
зы. 5.31х64 версия винрар. но не думаю что соседние версии сильно по скорости отличаются.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 19:56 10-11-2016 | Исправлено: Sulphide, 19:57 10-11-2016
MBo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На Celeron у меня 1138, но 5.20 версия 32-разрядная (и Win 32 тоже), так что сравнение вряд ли корректное.
 
Видеокарта влиять не должна, т.к. используемые графические примитивы - самые базовые.

Всего записей: 36 | Зарегистр. 02-09-2004 | Отправлено: 20:15 10-11-2016 | Исправлено: MBo, 20:18 10-11-2016
Steepe_Hare



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

Цитата:
Выпилили из-за поддержки Multi-device application. Обещали в след. версии сделать.  

 
Ясно, спасибо
 
 
Добавлено:
Господа, а чем отличается OnClick от OnTap в листбоксе на Android-е?
 
Еще иногда я ловлю ошибку Project project1.apk raised exception class Segmentation fault (11), когда обращаюсь в OnClick-е: ListBox1.Items[ListBox1.ItemIndex]

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 20:22 10-11-2016
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBo
Еще от версии винды зависит. В старых виндах некоторые операции GDI имели аппаратное ускорение.
А на OpenGL будет быстрее в первую очередь потому, что там по умолчанию невидимые примитивы не рисуются.
 
Steepe_Hare
В Андроидах тоже бывает мышка. Думаю, что OnTap на нее реагировать не будет.
Segmentation fault на Юниксах - это то же самое что Access Violation на Виндах.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 21:25 10-11-2016
Sulphide

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

Цитата:
На Celeron у меня 1138, но 5.20 версия 32-разрядная (и Win 32 тоже), так что сравнение вряд ли корректное.  
 
Видеокарта влиять не должна, т.к. используемые графические примитивы - самые базовые.
 

Сравнение по скорости процессоров, скорее всего некорректное. Я бы сказал просто, что у встроек лучше или наиболее полно реализован аппаратный блитинг, а вот по поводу дискретных видеокарт сомневаюсь.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 21:46 10-11-2016
asutp2

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sulphide, ты реально считаешь, что встроенное видео работает быстрее карт от той же nvidia?

Всего записей: 785 | Зарегистр. 22-10-2004 | Отправлено: 13:49 11-11-2016
Sulphide

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

Цитата:
Sulphide, ты реально считаешь, что встроенное видео работает быстрее карт от той же nvidia?  

А почему бы и нет? Мы же говорим про 2D, а не 3D, к тому же у встроек прямая запись/чтение в память, которую видит проц. Отбрасывается пинг-понг по PCI-Ex. Да и взять хотя бы последние встройки интела, которые аппаратно поддерживают h265 декодирование. Про gtx970 такого нельзя сказать.

Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 18:38 11-11-2016
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто уже поспешил на U2? Как полёт?

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 18:37 15-11-2016
vez



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

Цитата:
Кто уже поспешил на U2? Как полёт?

Пока непонятно, надо больше поработать (я на билдере).

Всего записей: 559 | Зарегистр. 02-06-2003 | Отправлено: 19:52 15-11-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум 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