|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Для обычных статических таблиц при небольшом количестве итемов - стандартное чуть-допиливание через API и все в шоколаде. Но есть у меня одна задача (представление -таблица), когда итемов много (например 1000, 10000), при этом большое количество итемов могут быстро изменяться, например 50 изменений в секунду. И плюс нужна еще сортировка по столбцам - быстрая. Исторически, будучи в VB6 я изначально использовал объектную модель. Но были кое-какие глюки и некоторые запаздывания при большом количестве изменений. Собственно тему затрагивал здесь: Проблемы с ListView Я тогда не поленился и нарисовал свой класс - полностью через API, начиная с CreateWindowEx. И оно себя оправдало: глюки ушли, производительность резко повысилась из-за отсутствия лишних перерисовок и т.п., которыми страдает VB6 объектная модель ListView. Единственное, с чем пришлось повозиться: сортировка, особенно сортировка дат. В отличии от объектной VB6 модели пришлось делать самому (в объектной модели .Net делается тоже ручками примерно по тому же принципу). Но в итоге осилил и с неплохими скоростными показателями: 15067121 ==== Мне не надо подсказок с кодами, не надо советов типа WPF или использовать что-то вместо Listview. Мне хотелось бы знать ваше мнение, насколько хороша/безглючна именно объектная модель Listview в .Net с точки зрения выполнения скоростной задачи с большим количеством итемов / большой динамикой изменений этих итемов. Единственный выбор который мне надо сделать: между .Net Listview и API-реализацией (для этой задачи). Последняя проверена в боевых условиях, первая по большому счету кот в мешке и пока не сделаешь не поймешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2015, 22:25 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Дмитрий77 Мне хотелось бы знать ваше мнение, насколько хороша/безглючна именно объектная модель Listview в .Net с точки зрения выполнения скоростной задачи с большим количеством итемов / большой динамикой изменений этих итемов. смотри сорсы, мне сдаётся, что тебя не устроит :) зря ты с дотнетом связался, c++ тебе нужен ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2015, 22:44 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Изопропилсмотри сорсы, мне сдаётся, что тебя не устроит :) Почему так думаешь? Что-то конкретное углядел? По идее если ничего не начудили, то объектная модель должна работать не хуже/не медленнее API-шной. В VB6 начудили. Изопропилзря ты с дотнетом связался, c++ тебе нужен Да не обязательно, у меня API-класс на VB6 готовый есть - под себя писал. Под .Net его недолго переписать - со всеми сортировками. Я просто думаю, идти по этому пути, или все-таки на базе .Net-ListView эту задачу делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2015, 23:02 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Дмитрий77когда итемов много (например 1000, 10000), при этом большое количество итемов могут быстро изменяться, например 50 изменений в секунду. И плюс нужна еще сортировка по столбцам - быстрая. .... пока не сделаешь не поймешь. А кто у вас заказчик? как он успевает заметить 50 изменений в секунду? Вы, часом не для инопланетных агентов проэктик делаете? Лист, грид, и другие визуальные компоненты - должны отображать для человека -который не различает событий с частотой выше 18 в секунду, и по заявлениям психологов не может одновременно держать в поле внимания более 9 обьектов... Вот передомной список - как я могу узнать что в нем 10000 записей? Как я могу одновременно увидеть эти 10000 строк? На обычном экране? Уже давно для отображения ипользуется поиск с фильтром, а для прокрутки больших списков - постраничный просмотр. Кстати, в WPF этот просмотр не надо писать самому - уже есть. :-/ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 10:20 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129А кто у вас заказчик? Автор и есть заказчик. Абсолютно беспощаден к себе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:27 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129Вот передомной список - как я могу узнать что в нем 10000 записей? В статусбаре написать :) D129Как я могу одновременно увидеть эти 10000 строк? На обычном экране?А зачем? Главное, чтобы они были в списке, и за ними не надо было лишний раз бегать на сервер. Если работа со списком динамичная, то это сильно экономит время. У меня была задача, требующая таких списков - управление базой организаций в колл-центре. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:32 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
AntonariyВ статусбаре написать :) .... У меня была задача, требующая таких списков - управление базой организаций в колл-центре. Есть две задачи - хранение информации, и ее отображение. Для отображения информацию надо подоготовить. И не давать визуальному элементу больше, чем человек (я надеюсь еще) может видеть и воспринимать, принимать решения, искать отличие итп... Использование строки статуса - это как раз подготовка и отображение обобщения - и это правильно. Но для чего же решать проблемы прорисовки тысяч обьектов, когда пользователь их все равно не увидит? Только потому, что компьютер сейчас это может? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:38 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129AntonariyВ статусбаре написать :) .... У меня была задача, требующая таких списков - управление базой организаций в колл-центре. Есть две задачи - хранение информации, и ее отображение. Для отображения информацию надо подоготовить. И не давать визуальному элементу больше, чем человек (я надеюсь еще) может видеть и воспринимать, принимать решения, искать отличие итп... Использование строки статуса - это как раз подготовка и отображение обобщения - и это правильно. Но для чего же решать проблемы прорисовки тысяч обьектов, когда пользователь их все равно не увидит? Только потому, что компьютер сейчас это может?сферические рассуждения в вакууме. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:39 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Прорисовывается вообще-то только то, что помещается на экране. Строка проскроллилась за пределы - все, она больше не прорисовывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:41 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:47 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
AntonariyПрорисовывается вообще-то только то, что помещается на экране. Строка проскроллилась за пределы - все, она больше не прорисовывается. Это если запрограммировать так. Винформовский грид больше 100 000 строк не тянет - это знание из разряда "сделаешь - поймешь". Я делал прокрутку по страницам сам. А потом заменил на купленный контрол. В котором кто-то другой сделал постраничную прокрутку с оптимизацией. Стандартный компонент (листвью итп) предназначен для показа ну 1000 компонентов (?). Если в него пихать больше - что не запрещено - он разве обязан продолжать так же хорошо работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:47 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Antonariyсферические рассуждения в вакууме. Разве решить что программа делать не должна - это пустопорожние рассуждения? А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)? Знаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:50 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129Antonariyсферические рассуждения в вакууме. Разве решить что программа делать не должна - это пустопорожние рассуждения? А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)? Знаете? 255? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:54 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
WinnipuhD129пропущено... Разве решить что программа делать не должна - это пустопорожние рассуждения? А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)? Знаете? 255? от 1500 до 2600 +- - определяется при установке Виндовс в зависимости от конфигурации системы. Каждый контрол получает хендл - и им есть максимум. Натолкнулся когда чинил аппликацию, где индусы читали базу, и динамически создавали табы и на каждом табе заполняли типа "карточку" - все данные обьекта. На тестовой базе - где строк было 10-20 - все работало, и даже в начале на продакшен - тоже. Пока не превысило где-то 300 строк - и ага. Проходило как "баг" - некая мелкая неприятность, ведь до этого все отлично работало... :-/ Тоже вот - решили не обсуждать сферического коника... а сразу "дело делать"... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 12:00 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129Это если запрограммировать так.Так уже запрограммировано в винде. В общем и целом отрисовка происходит по событию WM_PAINT, в это событие передаются координаты RECT, который надо перерисовать. Это событие посылает программе винда. Конкретно у листвью генерируется аналогичное событие для каждого элемента, который нужно перерисовать. Если элемент не видно или он не изменился с момента прошлой отрисовки, оно не генерируется. Тормоза идут от каких-то индусских расчетов по этому списку, не связанных с отрисовкой. Я свой список отображал в гриде, который не тормозил ни на каком количестве записей. Самая большая выборка на моей памяти была около 18к записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 12:01 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129Antonariyсферические рассуждения в вакууме. Разве решить что программа делать не должна - это пустопорожние рассуждения?Естественно. Это же не ваша программа, вы не знаете, что и как она делать должна. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 12:02 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)? Знаете?Нет. Зачем это знать, а тем более размещать? Каждый текстбокс это отдельное окно с собственным дескриптором, которое жрет ресурсы. Если требуется столько текстбоксов, то лучше воткнуть грид с тексбоксами, который будет одним окном. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 12:05 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
виртуализация не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 12:43 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Antonariy Это же не ваша программа, вы не знаете, что и как она делать должна. Ок, убедили. А кто знает? Топикастер? Ну судя по его первому посту - он ожидал чего-то вроде "молодец мужик, написал сам цельный компонент, залез в дебри, разобрался что к чему, теперь можно не париться - самодельный компонент все сьест - миллион строк ему не помеха!" "Да сразу было ясно что самоделка стабильнее фирменного компонента! Раз он так себя ведет с большими коллекциями..." :-) А ведь ситуация, когда стандартный компонент не делает то, что тебе нужно - это вопрос "а нужно ли это тебе?".... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 12:59 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
AntonariyD129А вот сколько кнопочек-текстбоксов-итп максимально возможно разместить на форме (винформ)? Знаете?Нет. Зачем это знать, а тем более размещать? Каждый текстбокс это отдельное окно с собственным дескриптором, которое жрет ресурсы. Если требуется столько текстбоксов, то лучше воткнуть грид с тексбоксами, который будет одним окном. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 13:00 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
[quot D129]AntonariyЕсли требуется столько текстбоксов, то лучше почитал. Решил что уже ответил. А кнопку нажал не ту. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 13:02 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
D129Ок, убедили. А кто знает? Топикастер?Да. Он прямо написал, что ему нужно. D129 А ведь ситуация, когда стандартный компонент не делает то, что тебе нужно - это вопрос "а нужно ли это тебе?".... Или это вопрос "а нужен ли стандартный компонент?". Зависит от принципиальности требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 13:27 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Antonariyа нужен ли стандартный компонент? топикстартеру dotnet не нужен, вот в чём прикол ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 13:30 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
ИзопропилAntonariyа нужен ли стандартный компонент? топикстартеру dotnet не нужен подходит, вот в чём прикол ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 13:42 |
|
Насколько объектный Listview в .Net устойчив/безглючен при нагрузках/объемах данных
|
|||
---|---|---|---|
#18+
Antonariydotnet не подходит, вот в чём прикол Вот оно что... оказывается, таблички из базы данных надо на Фокале отображать... :-)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 14:26 |
|
|
start [/forum/topic.php?fid=20&msg=38887122&tid=1401675]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 160ms |
0 / 0 |