|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
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.
ИМХО, класс TThread принес больше вреда, даже чем with. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 04:04 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
Dmvrt softwarer пропущено... Какие ещё нелепые советы будут? Чтобы сразу оптом. Data-Aware хороши, если их норм использовать, а иногда пользователи войдя в такой компонент, блокируют надолго запись, если напрямую редактировать таблицу, и блокировки ..., разве не так? вкак это... реализуется? %% и кем ? * при чем тут замечательные dataaware... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 04:36 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
Dmvrt Data-Aware хороши, если их норм использовать, а иногда пользователи войдя в такой компонент, блокируют надолго запись, если напрямую редактировать таблицу, и блокировки..., разве не так? Как минимум, это не имеет ни малейшего отношения к проблеме топикстартера (ускорение запуска приложения). Что же касается той проблемы, которую Вы описываете... кривыми руками, конечно, можно добиться и такого эффекта, и многих других замечательных последствий. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 04:43 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
ъъъъъ ИМХО, класс TThread принес больше вреда, даже чем with. Думаю, огонь принёс куда больше вреда, чем TThread и with вместе взятые. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 04:47 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
ъъъъъ 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.
ИМХО, класс TThread принес больше вреда, даже чем with. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 10:30 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
Dmvrt пользователи войдя в такой компонент, блокируют надолго запись, если напрямую редактировать таблицу, и блокировки..., разве не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 10:33 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
YuRock Вред принес не класс TThread, со всеми его недостатками, а один его метод Synchronize ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 17:50 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
Dmvrt, всю программистскую жизнь пользуюсь ими и никто из пользователей не жаловался ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2021, 18:02 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
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 секунд. Не все, конечно, так гладко, но покрайней мере можно показать прототип и сформировать требование, в каком направление нужно менять процесс инициализации приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 11:01 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
Флейм посыпался, потому что вопрос сформулирован черте-как. Вместо точного и тщательного описания процесса и условий - какое-то нубское нагромождение типа "У меня стоит фотошоп и есть беспроводная мышка, почему виндовс долго грузится?" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 13:09 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal Флейм посыпался, потому что вопрос сформулирован черте-как. Вместо точного и тщательного описания процесса и условий - какое-то нубское нагромождение типа "У меня стоит фотошоп и есть беспроводная мышка, почему виндовс долго грузится?" Типичный gigo. Garbage в виде непонятно чего на входе вместо внятного описания проблемы. Garbage в виде возможно неточных рекомендаций на непонятно что описанное. Общие рекомендации уже даны: 1. подключить профайлер и посмотреть таки в чем проблема на старте. 2. вынести нормально код старта в доп поток вместо этих безобразий с синхронизацией. Вообще, ничего личного, но мне кажется что после такого кода стоит присмотреться или к другой профессии или хотя бы к другому языку :) В Питоне, например, проблем с потоками не будет, он там всегда один procedure T_FormThread.execute; begin while not terminated do Synchronize(createform); ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 15:54 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
makhaon В Питоне, например, проблем с потоками не будет, он там всегда один Ряды эспертов ширились... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2021, 22:03 |
|
Delphi ускорение запуска приложения.
|
|||
---|---|---|---|
#18+
ъъъъъ, я к сожалению не эксперт по Питону, каюсь. однако вот везде пишут "Многопоточность в Python-это своего рода миф." я просто склонен верить: Тем не менее, в CPython (наиболее распространенная реализация Python - та, которую вы получаете, нажав кнопку загрузки на https://python.org или через менеджер пакетов), существует эта злая необходимость, называемая глобальной блокировкой интерпретатора (GIL). Чтобы динамическое управление памятью в CPython работало правильно, GIL предотвращает одновременное выполнение кода Python несколькими потоками. Если вы используете CPython, настоятельно рекомендуется использовать вместо этого модуль многопроцессорной обработки. Вместо того, чтобы запускать несколько потоков, он запускает несколько процессов (каждый со своим собственным GIL, поэтому все они могут выполняться одновременно). Где тут с такого рода рекомендациям многопоточность - для меня загадка. Может вот твердый знак, как настоящий эксперт, расскажет всему миру, что они все ошибаются и с легкостью запустит хотя бы сотню потоков. Лучше с кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2021, 09:41 |
|
|
start [/forum/topic.php?fid=58&startmsg=40115405&tid=2036826]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 403ms |
0 / 0 |