| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > DataGridView, тормозит отображение на другом компе |
| Автор: Hobotanius 8.12.2009, 23:20 |
| Суть вот в чём - я написал приложение с использованием трёх DataGridView и трёх закладок Tab-контрола. В DataGridView загружаю данные из БД. И на моём ноутбуке под вистой и на стационарном компе под XP Pro sp3 (лицензионка) Всё работает отлично с нормальной скоростью. Вчера поставил прогу заказчице на ноутбук Lenovo IdeaPad Y510. На ноутбуке был свежеустановленный зверь-сервиспак три, я доустановил SQLExpress 2005, развернул БД. Запускаю свою прогу - и о ужос! DataGridView как скатерть самобранка, как скрученый половичёк - раскатывает строки сверху вниз! Заказчица - счастлива, а я в шоке! Мне очень леново от таких скоростей работы грида! Сегодня впервые за последний месяц я думал всю ночь в сталкера над этой проблемой. На утро пришла одна мысль - поставить директикс, я поставил, но всё бестолку - скорость осталась прежней. Кто-нибудь подскажите, что мне делать чтоб успокоить мою душу быстрой работой грида?! Я знаю, что на этом ноуте муж заказчицы играл в фоллаут третий! А тут грид несчастных тридцать строчек выводит с таким тормозом! Неужели я зря изучал C#? Жду ваших советов! |
| Автор: Экскалупатор 9.12.2009, 00:09 |
| Hobotanius, наверное, надо посмотреть что именно ты там сделал. |
| Автор: Hobotanius 9.12.2009, 01:53 | ||
Хм. Это запрсто. Правда очень сомниваюсь, что это чем-то поможет. Т.к, на моём компе и на втором моём компе всё работает очень хорошо. Поэтому мне думается что дело не в коде и не в скорости работы с БД. Потому как еслиб в скорости обмена с бд, то должно было бы по идее быть сначало долгое ожидание, а затем быстрый выброс строк в грид. А тут именно - "раскручивание половичка"...
Вот так инициализируется\обновляется самый нагруженный грид. Какие есть идеи? От чего может быть РАЗНИЦА в скорости вывода строк в гриде на разных компах? |
| Автор: Экскалупатор 9.12.2009, 03:35 | ||
улыбнуло, зачем это? в смысле зачем сравнивать true с true? вообще код очень жесткий. индусы обзавидуются. но на мой взгляд ничего криминального, должно работать. может все таки это система виновата? по моим наблюдения сборки (свежеустановленный зверь-сервиспак три) это какой то ###... ни одной нормальной не встречал, постоянно насуют туда какого то г, а народ пользуется. ммм. а по какому событию ты все это запускаешь? |
| Автор: Hobotanius 9.12.2009, 06:38 | ||||||||||||||||||
Когда на c++ пишу, то такого не делаю, а по шарпу книжку такую читал где такой код называли чуть ли не обязательным и наглядным вот как-то и пошло с того момента - уже почти привычка...
Чё значит - жёсткий? В чём именно минус? Почему индусы)))?
Дык!!! Ведь всё работает только на моём компе - ноутбуке, стационарном. И я уверен, что на рабочем компе тоже будет работать, потому как подобная, мной написаная прога, работает с нормальной скоростью на моей работе где также стоит зверь сп3! И та прога на работе в ней ваще дофига гридов - порядка 15 - 20 штук.
Запускаю это в конструкторе. Вот так:
Вызываю при получении главным окном фокуса. Вот так:
Вызываю при смене активной вкладки. Вот так:
При добавлении нового товара. Вот так:
И соответственно при удалении товара. Вызываю при смене отображения. Вот так:
Вобщем вызываю каждый раз когда предполагается, что набор строк мог устареть. Пробовал при 100000 записей - на моём компе скорость приемлима - те не более секунды а то и менее. Заказчица обещала дать ноут на ночь - помучить. Так что первое что сделаю это поставлю родную ему висту и посмотрю работу под ней. |
| Автор: gradvinn 9.12.2009, 09:42 |
| Я бы чем гадать поставил бы временные метки, в тем более если целевой компьютер под рукой. А индуский код здесь не причём, код нормальный. |
| Автор: Hobotanius 9.12.2009, 10:37 | ||||||||||||
Не люблю пустых слов. Скажи конкретно - в чём минус?
Да чё тут подозревать? Смотри мой пост от 9.12.2009, 01:53 там всё написано чё и как я туда пихаю.
А можно по существу вопроса?
Как ни странно, но проблема как раз не в этом - ибо на моём ноутбуке всё летает.
Ну ты меня с первым вариантом уморил ваще! А про Paging поищу конечно хотя явно не сейчас. Я вообще не понимаю чё к коду, то приставать если на МОЕЙ машине всё ЛЕТАЕТ? Кстате, нашёл тут подобную тему - http://www.sql.ru/forum/actualthread.aspx?bid=34&tid=652032&pg=1 щас читаю, поэтому ещё не знаю чем дело кончится, на чём серце успокоится... Неужели время потраченное на изучение шарпа - потрачено в пустую? Добавлено через 4 минуты и 58 секунд
Может есть толковая ссылочка где показано как это делается? |
| Автор: WarHog 9.12.2009, 11:46 | ||||
Hobotanius, ты с чего решил, что для работы в Virtual mode нужно создавать в памяти копию базы???? "DataGridView поддерживает специальный виртуальный режим (Virtual mode) отображения данных. Основная идея такого режима заключена в том, что внутри control-а не хранится никаких данных. Вместо этого DataGridView генерирует события, в обработчиках которых программист может «подсунуть» ему данные, или наоборот, получить данные, введенные пользователем." © |
| Автор: mrbrooks 9.12.2009, 12:03 | ||||||
Минус в том что не пишут. Или ты мне предлагаешь перелопатить все то что написал? Ты мне за это заплатишь? Твой код трудно читаем. А так можешь любить, что считаешь нужным. Другим знать это не обязательно. Существу чего?
В чем проблема? Поставляй свою БД с точно такими же ноутбуками. И вопрос отпадет сам собой.
Нет не кажется. Если тебя это забавляет - респект заказчику. Почитай почитай. На этом же форуме один камрад, как раз стебался над подобной проблемой - мол люди после вопят - "Зачем же я пишу на шарпе! Надо срочно вернуться на плюсы.!".
А с чего ты решил что он вообще разбирался в данном вопросе? |
| Автор: Экскалупатор 9.12.2009, 12:39 |
| мне кажется тут все упрется в железо ноутбука. я писал похожую прогу, где дата грид(правда один) обнавлялся так же, по фокусу, при добавлении и пр. на компе котором писал ему памяти хватало, а когда челу отдал у него все как в слайд шоу, но у него при этом комп древний (целерон 1,5 и 256 ОЗУ) и при таком раскладе я посчитал это нормальным. особенно если учесть все моменты твоего кода(если даже оставить абсолютную нечитаемость) например работы со строками, плюс количество запуска этого (да наверняка и других подобных) методов, среда может просто не успевать за твоей прогой. Добавлено через 7 минут и 27 секунд опять же я думаю что такая вещь как "зверь" это вообще смерть для компа, и ставить ее могут только криворукая школота, которая хочет все и сразу, не задумываясь а для чего это все нужно и как это все будет работать вместе. я реально не видел что бы с подобными вещами кто то мог нормально работать. у меня сосед нахваливает, и переустанавливает ее каждую неделю, потому что начинает по его словам "тупить". |
| Автор: Hobotanius 9.12.2009, 13:15 | ||||||||
Очень полноценное предложение. Я наверное должен быть телепатом чтоб тебя понять.
Я тебе ни чё не предлагаю.
Ты читать внимательно умеешь?
Судя по количеству тобой написаных постов - ты круто во всём разбираешься... Только люди хорошо разбирающиеся не пишут в таком тоне. Ты пренериятный собеседник и поэтому мне не нужны твои советы. Видя темы моего авторства - проходи мимо не задерживайся... |
| Автор: Экскалупатор 9.12.2009, 13:28 |
| Hobotanius, ну так как? конфигурацию целевой машины можешь озвучить? |
| Автор: mrbrooks 9.12.2009, 13:30 | ||||
мне до тебя далеко.
прорвало? |
| Автор: Ram1reS 9.12.2009, 14:24 |
| Почитайте про класс StopWatch, и замерьте время выполнения разных участков кода на буке заказчика, будет яснее где конкретно проблема. |
| Автор: Hobotanius 9.12.2009, 18:46 | ||||||||||
Да видимо я перепутал с другим способом когда результаты выборок хранятся локально в памяти. Спасиб что ткнул носом - читаю.
Озвучиваю - ноутбук Леново Процессор: Intel Core 2 Duo T5450 1.66 ГГц, 2Мб L2 Чипсет: Intel PM965 Оперативная память: 1024Mb DDRII 667МГц, SO-DIMM Hyundai HYMP512S64CP8 Дисплей: 15.4" WXGA (1280х800) VibrantView (AUO B154EW08) Графическая система: Nvidia Ge Force 8400M GS 128Mb Жесткий диск: Hitachi HTS542516K9SA00 160 Гб 5400 об/мин Оптический привод: DVD-RW Optiarc AD-7560 Звуковая система: Realtec ALC888, 4 динамика + сабвуфер, Dolby Home Theatre Вебкамера: 1.3 Мп Беспроводные интерфейсы: Адаптер WiFi Intel PRO/Wireless 3945ABG Проводные интерфейсы: Сетевая карта Broadcom NetLink BCM5906M Fast Ethernet 10/100Мбит/с Факс-модем Motorola SM56 56К
Ну вот у меня тоже есть такое подозрение, поэтому как только дадут мне целевой бук хочу поставить туда его родную висту и глянуть. Хотя я знаю людей у которых по несколько лет уже стоит зверь и всё нормуль. Да что говорить у меня самого он стоял пока лицензионкой не обзавёлся.
Спасиб, буду читать. Возможно, что просто дрова для видяхи криво встали... |
| Автор: Hobotanius 9.12.2009, 19:02 | ||
Пока что там не за чем неуспевать, сёдня заказчица начала вбивать данные и там на данный момент порядка ста записей всего, а когда я наблюдал тормоза то было всего записей 30 отсилы. И тормоз был независимо от кол-ва записей. |
| Автор: Экскалупатор 9.12.2009, 19:15 |
| да судя по железу тормозить не должно. Hobotanius, так я не про количество записей говорил, а про то что получается из твоего кода, постоянно создаются строки, постоянно открываются соединения и пр. а если учесть тот факт что сборщик мусора собирает мусор тогда, когда захочет, то есть мысль что у тебя просто остается много лишнего мусора, на обработку которого требуется определенное количество времени. |
| Автор: Hobotanius 9.12.2009, 22:33 |
| Вобщем я так понимаю мне необходимо пересмотреть способ работы с гридом. Это ладно. Но всё же это не объясняет почему на одной машине всё нормуль а на другой тормоз. |