Ln долго подгружает все библиотеки

Тема в разделе "Lotus - Программирование", создана пользователем fedotxxl, 24 мар 2009.

  1. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Форма документа открывается достаточно долго. Причем обмена данными между сервером и клиентом нет. Видно, что клиент прогружает библиотеки. Может можно как-то ускорить этот процесс / прогрузить один раз?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Везде подключать минимально нужное кол-во библиотек.
    Уже было об этом, сейчас поищу.

    Нашёл
     
  3. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    В результате библиотеки "прогружаются" всегда один раз, а вот удаление лишних "Use" может значительно помочь.

    Я имею в виду если модуль1 использует модуль2 то необходимо вызвать только модуль1 а не юзать два.

    Посмотри на все экшены и бутоны формы - "Use" из них лучше вынести в Globals формы.
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я очень сильно против.
    Если у тебя заюзана библиотека в globals, она будет подгружаться в любом случае при открытии формы.
    Если биб-ка заюзана локально, он будет подгружаться только во время первого нажатия на этот самый локальный элемент (кнопка, экшн).
    При активации других элементов использующих эту самую библиотеку, она грузиться не будет.

    Я вообще против запихивания чего-либо в globals, кроме тех случаев, когда это действительно необходимо.
     
  5. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    Omh ты прав, но я хотел сказать если эти юсы используются также самой формой, например в эвентах формы, то можно исключить их из экшенов ... частенько встречаю, что одну и ту же библиотеку (обычно которая включает все под библиотеки) вставляют во все что можно.
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    По моему глубокому убеждению, если библиотеки используются формой, но их надо подключать в Declarations формы, но никак не в globals.
    Мало ли я потом решу, что мне никакие ивенты формы не нужны, а глобалс останется и будет опять-таки грузиться каждый раз при открытии.

    Для себя я решил (и пока не будут какие-либо изменения в с этой стороны лотусе), что всё надо подключать локально и минимально возможное кол-во.
    Я не только для себя это решил, я, вообще, уверен, что это правильно.

    Просто видел примеры такого кода: всё подключить глобально, насыпать пригоршню глобальных переменных на форме, на используемой тут же сабформе, и на сладкое переопределить неприватную глобальную переменную из библиотеки.
    Тьфу, пишу и аж коробит :rolleyes:
     
  7. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Инфа точная? Т.е. если у меня 10 кнопок используют одну и туже библиотеку, то при нажатии на первую библиотека прогрузится, а при нажатии на остальные уже будет в памяти?

    Все-таки я предпочитаю везде писать Use (т.е. если у меня в форме используются функция из библиотеки L1 и я точно знаю, что он L1 инклудится в L2, L2 инклудится в форму, то все-равно лучше проинклудить в форму и L1... на мой взгляд)
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Инфа точная
    Специально приложайку делал, что бы камрадам проилюстрировать.
    Т.е. с момента открытия формы до её закрытия каждая библиотека принициализируется 1 раз, в скольки бы местах на этой форме она не вызывалась.

    Вот последнее твоё предположение "все-равно лучше проинклудить в форму и L1... на мой взгляд" неверно.
    У меня после очистки базы от лишних юзов скорость работы повысилась многократно (повторюсь, там была большая иерархия библиотек, на малой, думаю, будет не так заметно).
     
  9. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    ... с таким подходом можно забыть и в Declarations формы убрать эту библиотеку :rolleyes: ... а секцию Globals видно не зря просто придумали ... и в случае использования одной библиотеки и формой и экшенами минимально возможное кол-во подключений будет достигнуто также + будут отсутствовать лишние строчки в экшенах (которые будут проверять загружена библа или нет) и замену названия библиотеки можно осуществлять в одном месте. Это лишь один из вариантов имплементации логики программы, и утверждать не верность такого подхода я бы не стал.


    точная
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Murtas
    Полемизировать конечно можно, но мне ближе подход, когда каждый экшн/кнопка и т.д. является standalone (по отношению к библиотекам).
    Т.е. могу взять кнопку и перекопировать в другую форму, не заботясь о том, подключена ли библиотека в той форме (globals), куда я копирую.
    Проще мантейнить.
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    а я в таких случаях еще люблю убирать Option Declare!
    ну зачем она там уже?! путать следы, так путать! :rolleyes:

    а это (переименование библиотек) уже огрехи проектирования
     
  12. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Akupaka
    Забыл! Это тоже практикуют. :rolleyes:
     
  13. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    а я в таких случаях выношу кнопку в shared :rolleyes:
     
  14. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Omh
    Гм... 8ка хорошо работает с библиотеками, но вот семерка...
    Результаты моих тестов:
    Если библиотеки инклудить только в кнопки (не в глобал, не в форму), то при открытии все библиотеки для каждой кнопки будут прогружены. Т.е. если у меня 10 кнопок используют одну и ту же библиотеку, то библиотека прогрузится 10 раз. Задержка на открытие растет практически линейно
    Если подгружать библиотеку в форму, то скорость открытия не зависит от кол-ва кнопок
    Самый лучший результат - поместить библиотеку в Globals. Открывается быстрее всего. Может так и сделать? Globals подформы не распространяется ведь на всю форму?

    Так что ты не прав
     
  15. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Господа, предлагаю вам не линейкой орудовать, а составить список ваших "Best practices" :)
     
  16. Murtas

    Murtas Well-Known Member

    Регистрация:
    11 апр 2006
    Сообщения:
    123
    Симпатии:
    0
    fedotxxl вот с семеркой судьба не свела на долго ... если такая глюкавая - избавляйся быстрей

    а про Globals я где-то на буржуйском форуме читал ... возможно там и советовали как победить 7ку - точно не помню ... но особо плохого ничего в этом нет

    да кстати, расскажи как тестировал - чет слабо верится
     
  17. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я тока под семёркой и шестёркой девелоплю.
    Восьмёрку смотрел, но усиленно не использовал.

    Библиотека не грузиться 10 раз.
    Я только что проверил.
    Инициализируется один раз при первом нажтии кнопки, либо при подгрузке, если заюзана в глобалах или декларации формы.

    Тестовая база приложена :)
     

    Вложения:

    • CodeStore.zip
      Размер файла:
      45,2 КБ
      Просмотров:
      13
  18. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Господин fedotxxl, есть какие новости?
    Мне очень интересно, чем всё закончилось :)
     
  19. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Omh
    Да, получается метод Initialize срабатывает один раз. Но я тут немного о другом - как долго грузятся библиотеки при открытии формы. Вот мои практические результаты для 7.0.3 (для восьмерки все лучше) (ps под кнопкой я подразумевал кнопку на actionBar'e, но не суть важно) (pss врямя открытия в относительных единицах... по-моему в мс)
    кол-во кнопок - время открытия
    1 - 951
    2 - 1802
    4 - 3350
    8 - 7000

    теперь библиотека, которая используется кнопкой вынесена в Globals формы
    кол-во кнопок - время открытия
    1 - 30
    2 - 30
    4 - 50
    8 - 70

    Вот такие пироги...

    Возник ещё один вопрос:
    предположим у меня есть два набора функций (по штук 10). Логически наборы связаны (их можно объеденить в одну базу по логике), но выполняют несколько разные задачи. Один набор используется чаще другого. Имеет ли смысл наборы разделять в разные библиотеки или же объединить одной?
     
  20. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    че-то я не понял, а как это у тебя результаты во 2-м так сильно отличаются от 1-го?
    если предположить, что загрузка библиотеки занимает в любом случае какое-то время, то, по-идее, в 1-м и 2-м вариантах в случае одноразовой подгрузки библиотеки время будет равно некоторому постоянному значению (пусть с небольшой разницей в зависимости от текущей нагрузки системы), а у тебя разница на 100 порядков!
    не укладывается :)

    про наборы, почти все функции в базе где-то как-то связаны, но лепить из-за этого одну большую библиотеку нет смысла
    нужно делить не только по смыслу, а и из-за объема функций, т.к. объем библиотек тоже влияет, как по мне, на время загрузки...
     
Загрузка...
Похожие Темы - долго подгружает все
  1. CasterTroy
    Ответов:
    3
    Просмотров:
    1.653
  2. Fillya
    Ответов:
    2
    Просмотров:
    2.114
  3. susinmn
    Ответов:
    65
    Просмотров:
    13.524
  4. Chron
    Ответов:
    21
    Просмотров:
    5.484
  5. Omh
    Ответов:
    32
    Просмотров:
    10.844

Поделиться этой страницей