Использование памяти в приложении WPF - как отслеживать и управлять? (НАЧИНАЮЩАЯ ОБЛАСТЬ) - PullRequest
0 голосов
/ 12 февраля 2012

У меня есть небольшое приложение WPF, использующее VB.net в качестве кода, и я хочу добавить некоторые функции, но я беспокоюсь о производительности. Я ДЕЙСТВИТЕЛЬНО благодарен за любые ответы, особенно если вы могли бы включить статьи об этом для начинающих, но, пожалуйста, помогите мне, чтобы я мог чувствовать себя спокойно ...

1) Мое приложение взаимодействует со сторонней базой данных для отображения данных в реальном времени для пользователя. Мой предложенный метод заключается в создании фонового работника для запроса базы данных каждые 30 секунд и отображения данных. Я запрашиваю около 2000 записей всех длинных целых типов, сохраняю их в наборе данных и затем использую LINQ для создания подмножеств наблюдаемых коллекций, с которыми связаны элементы управления WPF.

Это слишком интенсивно? сколько памяти я использую для 2000 записей long int? Работает ли фоновый работник каждые 30 секунд слишком обременительно? это в конечном итоге потерпит крах? Будет ли это мешать пользователям другой повседневной работы (Excel, электронная почта и т. Д.)?

2) Если приложение постоянно читает / пишет из текстовых файлов, может ли это каким-то образом быть вредным для пользователя, если он выполняет повседневную работу? Я хочу, чтобы приложение считывало / записывало текстовые файлы, но я не хочу, чтобы оно каким-то образом мешало чему-то другому, что делает человек, так как это приложение будет больше похоже на приложение «беги в фоновом режиме, проверяй, когда мне нужно».

3) Есть ли способ количественно оценить, каким образом будет облагаться налогом определенный блок кода, хранилище переменных или хранилище данных для конечного пользователя? Что приемлемо?

4) У меня есть несколько списков (из t), которые я использую как «глобальные» списки, где я могу нажать их из любого окна моего приложения для отображения данных. Есть ли способ количественно определить, сколько памяти занимают эти списки? Списки варьируются от списков целых до списков переменных с десятками свойств. Могу ли я как-то определить, насколько это облагается налогом на приложение или конечного пользователя?

Спасибо за любую помощь, и я продолжу поиск статей, чтобы ответить на мои вопросы

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Я просто попробую несколько.Байт целое число использует байт памяти.Int32 использует 4 байта.Таким образом, 2000 Int32 будет использовать 8 КБ.Если у вас есть запрос, вам нужно много работать, и это занимает 5-10 секунд, вам нужно внимательно посмотреть на этот запрос и добавить недостающие индексы.Если это динамические данные, тогда (nolock) может быть в порядке и быстрее с меньшей (без) блокировкой.Если запрос возвращает одни и те же данные для всех пользователей, я надеюсь, что не у всех пользователей выполняется один и тот же запрос.У вас должно быть двухуровневое приложение, в котором сервер запускает запрос каждые x секунд и отправляет этот ответ нескольким клиентам, которые его запрашивают.Что касается размера объекта, просто сложите его - байт - это байт.Вы можете поставить приложение в отладку и почувствовать, какие операторы бывают быстрыми и медленными.

2 голосов
/ 12 февраля 2012

Если вы действительно хотите / должны вникнуть в детали использования памяти приложением, вам следует использовать профилировщик памяти:

На другие ваши вопросы сложно ответить, поскольку все соответствующие аспекты довольно неизвестны:

  • какая БД используется?
  • насколько мощна машина с сервером БД?
  • сколько пользователей?

и т. Д.

В некоторых случаях может помочь профилировщик производительности - например, вышеупомянутые профилировщики памяти (особенно из RedGate / JetBrains и т. Д.) Обычно доступны в упаковке вместе с профилировщиком производительности ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...