powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
25 сообщений из 74, страница 1 из 3
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886624
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для обычных статических таблиц при небольшом количестве итемов - стандартное чуть-допиливание через API и все в шоколаде.

Но есть у меня одна задача (представление -таблица), когда итемов много (например 1000, 10000), при этом большое количество итемов могут быстро изменяться, например 50 изменений в секунду. И плюс нужна еще сортировка по столбцам - быстрая.

Исторически, будучи в VB6 я изначально использовал объектную модель.
Но были кое-какие глюки и некоторые запаздывания при большом количестве изменений.
Собственно тему затрагивал здесь:
Проблемы с ListView

Я тогда не поленился и нарисовал свой класс - полностью через API, начиная с CreateWindowEx.
И оно себя оправдало: глюки ушли, производительность резко повысилась из-за отсутствия лишних перерисовок и т.п., которыми страдает VB6 объектная модель ListView.

Единственное, с чем пришлось повозиться: сортировка, особенно сортировка дат.
В отличии от объектной VB6 модели пришлось делать самому (в объектной модели .Net делается тоже ручками примерно по тому же принципу). Но в итоге осилил и с неплохими скоростными показателями:
15067121

====
Мне не надо подсказок с кодами, не надо советов типа WPF или использовать что-то вместо Listview.

Мне хотелось бы знать ваше мнение, насколько хороша/безглючна именно объектная модель Listview в .Net с точки зрения выполнения скоростной задачи с большим количеством итемов / большой динамикой изменений этих итемов.

Единственный выбор который мне надо сделать: между .Net Listview и API-реализацией (для этой задачи). Последняя проверена в боевых условиях, первая по большому счету кот в мешке и пока не сделаешь не поймешь.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886631
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77 Мне хотелось бы знать ваше мнение, насколько хороша/безглючна именно объектная модель Listview в .Net с точки зрения выполнения скоростной задачи с большим количеством итемов / большой динамикой изменений этих итемов.
смотри сорсы, мне сдаётся, что тебя не устроит :)

зря ты с дотнетом связался, c++ тебе нужен
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886636
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилсмотри сорсы, мне сдаётся, что тебя не устроит :)
Почему так думаешь? Что-то конкретное углядел?
По идее если ничего не начудили, то объектная модель должна работать не хуже/не медленнее API-шной. В VB6 начудили.

Изопропилзря ты с дотнетом связался, c++ тебе нужен
Да не обязательно, у меня API-класс на VB6 готовый есть - под себя писал. Под .Net его недолго переписать - со всеми сортировками.
Я просто думаю, идти по этому пути, или все-таки на базе .Net-ListView эту задачу делать.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886820
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77когда итемов много (например 1000, 10000), при этом большое количество итемов могут быстро изменяться, например 50 изменений в секунду. И плюс нужна еще сортировка по столбцам - быстрая.
....
пока не сделаешь не поймешь.

А кто у вас заказчик? как он успевает заметить 50 изменений в секунду? Вы, часом не для инопланетных агентов проэктик делаете?
Лист, грид, и другие визуальные компоненты - должны отображать для человека -который не различает событий с частотой выше 18 в секунду, и по заявлениям психологов не может одновременно держать в поле внимания более 9 обьектов...
Вот передомной список - как я могу узнать что в нем 10000 записей?
Как я могу одновременно увидеть эти 10000 строк? На обычном экране?
Уже давно для отображения ипользуется поиск с фильтром, а для прокрутки больших списков - постраничный просмотр.
Кстати, в WPF этот просмотр не надо писать самому - уже есть.
:-/
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886923
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129А кто у вас заказчик? Автор и есть заказчик.

Абсолютно беспощаден к себе :)
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886935
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Вот передомной список - как я могу узнать что в нем 10000 записей? В статусбаре написать :)
D129Как я могу одновременно увидеть эти 10000 строк? На обычном экране?А зачем? Главное, чтобы они были в списке, и за ними не надо было лишний раз бегать на сервер. Если работа со списком динамичная, то это сильно экономит время.
У меня была задача, требующая таких списков - управление базой организаций в колл-центре.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886943
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВ статусбаре написать :)
....
У меня была задача, требующая таких списков - управление базой организаций в колл-центре.

Есть две задачи - хранение информации, и ее отображение.
Для отображения информацию надо подоготовить. И не давать визуальному элементу больше, чем человек (я надеюсь еще) может видеть и воспринимать, принимать решения, искать отличие итп...
Использование строки статуса - это как раз подготовка и отображение обобщения - и это правильно.
Но для чего же решать проблемы прорисовки тысяч обьектов, когда пользователь их все равно не увидит? Только потому, что компьютер сейчас это может?
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886945
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129AntonariyВ статусбаре написать :)
....
У меня была задача, требующая таких списков - управление базой организаций в колл-центре.

Есть две задачи - хранение информации, и ее отображение.
Для отображения информацию надо подоготовить. И не давать визуальному элементу больше, чем человек (я надеюсь еще) может видеть и воспринимать, принимать решения, искать отличие итп...
Использование строки статуса - это как раз подготовка и отображение обобщения - и это правильно.
Но для чего же решать проблемы прорисовки тысяч обьектов, когда пользователь их все равно не увидит? Только потому, что компьютер сейчас это может?сферические рассуждения в вакууме.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886950
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прорисовывается вообще-то только то, что помещается на экране. Строка проскроллилась за пределы - все, она больше не прорисовывается.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886956
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а objectlistview не подходит?

http://objectlistview.sourceforge.net/cs/features.html
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886957
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПрорисовывается вообще-то только то, что помещается на экране. Строка проскроллилась за пределы - все, она больше не прорисовывается.

Это если запрограммировать так.
Винформовский грид больше 100 000 строк не тянет - это знание из разряда "сделаешь - поймешь".
Я делал прокрутку по страницам сам. А потом заменил на купленный контрол. В котором кто-то другой сделал постраничную прокрутку с оптимизацией.

Стандартный компонент (листвью итп) предназначен для показа ну 1000 компонентов (?). Если в него пихать больше - что не запрещено - он разве обязан продолжать так же хорошо работать?
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886959
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyсферические рассуждения в вакууме.
Разве решить что программа делать не должна - это пустопорожние рассуждения?
А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)?
Знаете?
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886968
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Antonariyсферические рассуждения в вакууме.
Разве решить что программа делать не должна - это пустопорожние рассуждения?
А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)?
Знаете?

255?
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886985
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhD129пропущено...

Разве решить что программа делать не должна - это пустопорожние рассуждения?
А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)?
Знаете?

255?

от 1500 до 2600 +- - определяется при установке Виндовс в зависимости от конфигурации системы.
Каждый контрол получает хендл - и им есть максимум.
Натолкнулся когда чинил аппликацию, где индусы читали базу, и динамически создавали табы и на каждом табе заполняли типа "карточку" - все данные обьекта.
На тестовой базе - где строк было 10-20 - все работало, и даже в начале на продакшен - тоже.
Пока не превысило где-то 300 строк - и ага.
Проходило как "баг" - некая мелкая неприятность, ведь до этого все отлично работало...
:-/

Тоже вот - решили не обсуждать сферического коника... а сразу "дело делать"...
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886987
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Это если запрограммировать так.Так уже запрограммировано в винде. В общем и целом отрисовка происходит по событию WM_PAINT, в это событие передаются координаты RECT, который надо перерисовать. Это событие посылает программе винда. Конкретно у листвью генерируется аналогичное событие для каждого элемента, который нужно перерисовать. Если элемент не видно или он не изменился с момента прошлой отрисовки, оно не генерируется. Тормоза идут от каких-то индусских расчетов по этому списку, не связанных с отрисовкой.

Я свой список отображал в гриде, который не тормозил ни на каком количестве записей. Самая большая выборка на моей памяти была около 18к записей.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886991
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Antonariyсферические рассуждения в вакууме.
Разве решить что программа делать не должна - это пустопорожние рассуждения?Естественно. Это же не ваша программа, вы не знаете, что и как она делать должна.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38886996
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)?
Знаете?Нет. Зачем это знать, а тем более размещать? Каждый текстбокс это отдельное окно с собственным дескриптором, которое жрет ресурсы. Если требуется столько текстбоксов, то лучше воткнуть грид с тексбоксами, который будет одним окном.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887066
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
виртуализация не подходит?
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887091
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Это же не ваша программа, вы не знаете, что и как она делать должна.
Ок, убедили.
А кто знает? Топикастер?
Ну судя по его первому посту - он ожидал чего-то вроде "молодец мужик, написал сам цельный компонент, залез в дебри, разобрался что к чему, теперь можно не париться - самодельный компонент все сьест - миллион строк ему не помеха!"
"Да сразу было ясно что самоделка стабильнее фирменного компонента! Раз он так себя ведет с большими коллекциями..."

:-)

А ведь ситуация, когда стандартный компонент не делает то, что тебе нужно - это вопрос "а нужно ли это тебе?"....
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887092
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyD129А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)?
Знаете?Нет. Зачем это знать, а тем более размещать? Каждый текстбокс это отдельное окно с собственным дескриптором, которое жрет ресурсы. Если требуется столько текстбоксов, то лучше воткнуть грид с тексбоксами, который будет одним окном.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887095
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot D129]AntonariyЕсли требуется столько текстбоксов, то лучше

почитал. Решил что уже ответил. А кнопку нажал не ту.

:-)
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887122
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Ок, убедили.
А кто знает? Топикастер?Да. Он прямо написал, что ему нужно.

D129
А ведь ситуация, когда стандартный компонент не делает то, что тебе нужно - это вопрос "а нужно ли это тебе?"....
Или это вопрос "а нужен ли стандартный компонент?".

Зависит от принципиальности требования.
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887131
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа нужен ли стандартный компонент?
топикстартеру dotnet не нужен, вот в чём прикол
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887150
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилAntonariyа нужен ли стандартный компонент?
топикстартеру dotnet не нужен подходит, вот в чём прикол
...
Рейтинг: 0 / 0
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
    #38887238
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariydotnet не подходит, вот в чём прикол

Вот оно что... оказывается, таблички из базы данных надо на Фокале отображать...
:-))))
...
Рейтинг: 0 / 0
25 сообщений из 74, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]