![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Hobotanius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Суть вот в чём - я написал приложение с использованием трёх DataGridView и трёх закладок Tab-контрола. В DataGridView загружаю данные из БД. И на моём ноутбуке под вистой и на стационарном компе под XP Pro sp3 (лицензионка) Всё работает отлично с нормальной скоростью. Вчера поставил прогу заказчице на ноутбук Lenovo IdeaPad Y510. На ноутбуке был свежеустановленный зверь-сервиспак три, я доустановил SQLExpress 2005, развернул БД. Запускаю свою прогу - и о ужос! DataGridView как скатерть самобранка, как скрученый половичёк - раскатывает строки сверху вниз! Заказчица - счастлива, а я в шоке! Мне очень леново от таких скоростей работы грида! Сегодня впервые за последний месяц я думал всю ночь в сталкера над этой проблемой. На утро пришла одна мысль - поставить директикс, я поставил, но всё бестолку - скорость осталась прежней.
Кто-нибудь подскажите, что мне делать чтоб успокоить мою душу быстрой работой грида?! Я знаю, что на этом ноуте муж заказчицы играл в фоллаут третий! А тут грид несчастных тридцать строчек выводит с таким тормозом! Неужели я зря изучал C#? Жду ваших советов! |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
Hobotanius, наверное, надо посмотреть что именно ты там сделал.
|
|||
|
||||
| Hobotanius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Хм. Это запрсто. Правда очень сомниваюсь, что это чем-то поможет. Т.к, на моём компе и на втором моём компе всё работает очень хорошо. Поэтому мне думается что дело не в коде и не в скорости работы с БД. Потому как еслиб в скорости обмена с бд, то должно было бы по идее быть сначало долгое ожидание, а затем быстрый выброс строк в грид. А тут именно - "раскручивание половичка"...
Вот так инициализируется\обновляется самый нагруженный грид. Какие есть идеи? От чего может быть РАЗНИЦА в скорости вывода строк в гриде на разных компах? |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
улыбнуло, зачем это? в смысле зачем сравнивать true с true? вообще код очень жесткий. индусы обзавидуются. но на мой взгляд ничего криминального, должно работать. может все таки это система виновата? по моим наблюдения сборки (свежеустановленный зверь-сервиспак три) это какой то ###... ни одной нормальной не встречал, постоянно насуют туда какого то г, а народ пользуется. ммм. а по какому событию ты все это запускаешь? |
|||
|
||||
| Hobotanius |
|
||||||||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Когда на c++ пишу, то такого не делаю, а по шарпу книжку такую читал где такой код называли чуть ли не обязательным и наглядным вот как-то и пошло с того момента - уже почти привычка...
Чё значит - жёсткий? В чём именно минус? Почему индусы)))?
Дык!!! Ведь всё работает только на моём компе - ноутбуке, стационарном. И я уверен, что на рабочем компе тоже будет работать, потому как подобная, мной написаная прога, работает с нормальной скоростью на моей работе где также стоит зверь сп3! И та прога на работе в ней ваще дофига гридов - порядка 15 - 20 штук.
Запускаю это в конструкторе. Вот так:
Вызываю при получении главным окном фокуса. Вот так:
Вызываю при смене активной вкладки. Вот так:
При добавлении нового товара. Вот так:
И соответственно при удалении товара. Вызываю при смене отображения. Вот так:
Вобщем вызываю каждый раз когда предполагается, что набор строк мог устареть. Пробовал при 100000 записей - на моём компе скорость приемлима - те не более секунды а то и менее. Заказчица обещала дать ноут на ночь - помучить. Так что первое что сделаю это поставлю родную ему висту и посмотрю работу под ней. |
||||||||||||||||||
|
|||||||||||||||||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 7 Всего: 306 |
Тебя обманули. Ибо даже так они не пишут Hobotanius, короче Склифасовский - фиг с ним кодом. Хотя за такое в 15 веке сжигали на кострах - ибо ересь Подозреваю, что небось в Грид ты запихиваешь всю информацию каким нибудь select * from blabla. Ооо! Интересно как - выходит пользователь с удовольствием просмотрит данный результат? А потом когда посмотрит, однозначно будет тебя искать. Возможно с битой Проблема одна. А именно в реализации. Не надо возращать сразу 100000 записей - это никому не надо. Выходов здесь два: 1) Менее кошерный. DataGridView.VirtualMode со всеми вытекающими (см. хелп). 2) Более кошерный. Использовать т.н. Paging (причем фильтрование вести не локально храня все в памяти, а sql-запросами - подробнее в гугл. Решения были) Гуд лак! |
|||
|
||||
| gradvinn |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 16.9.2009 Репутация: нет Всего: нет |
Я бы чем гадать поставил бы временные метки, в тем более если целевой компьютер под рукой. А индуский код здесь не причём, код нормальный.
|
|||
|
||||
| Hobotanius |
|
||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Не люблю пустых слов. Скажи конкретно - в чём минус?
Да чё тут подозревать? Смотри мой пост от 9.12.2009, 01:53 там всё написано чё и как я туда пихаю.
А можно по существу вопроса?
Как ни странно, но проблема как раз не в этом - ибо на моём ноутбуке всё летает.
Ну ты меня с первым вариантом уморил ваще! А про Paging поищу конечно хотя явно не сейчас. Я вообще не понимаю чё к коду, то приставать если на МОЕЙ машине всё ЛЕТАЕТ? Кстате, нашёл тут подобную тему - http://www.sql.ru/forum/actualthread.aspx?...652032&pg=1 щас читаю, поэтому ещё не знаю чем дело кончится, на чём серце успокоится... Неужели время потраченное на изучение шарпа - потрачено в пустую? Добавлено через 4 минуты и 58 секунд
Может есть толковая ссылочка где показано как это делается? |
||||||||||||
|
|||||||||||||
| WarHog |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.10.2007 Где: Воронеж Репутация: нет Всего: 2 |
Hobotanius, ты с чего решил, что для работы в Virtual mode нужно создавать в памяти копию базы???? "DataGridView поддерживает специальный виртуальный режим (Virtual mode) отображения данных. Основная идея такого режима заключена в том, что внутри control-а не хранится никаких данных. Вместо этого DataGridView генерирует события, в обработчиках которых программист может «подсунуть» ему данные, или наоборот, получить данные, введенные пользователем." © --------------------
|
||||
|
|||||
| mrbrooks |
|
||||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 7 Всего: 306 |
Минус в том что не пишут. Или ты мне предлагаешь перелопатить все то что написал? Ты мне за это заплатишь? Твой код трудно читаем. А так можешь любить, что считаешь нужным. Другим знать это не обязательно. Существу чего?
В чем проблема? Поставляй свою БД с точно такими же ноутбуками. И вопрос отпадет сам собой.
Нет не кажется. Если тебя это забавляет - респект заказчику. Почитай почитай. На этом же форуме один камрад, как раз стебался над подобной проблемой - мол люди после вопят - "Зачем же я пишу на шарпе! Надо срочно вернуться на плюсы.!".
А с чего ты решил что он вообще разбирался в данном вопросе? |
||||||
|
|||||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
мне кажется тут все упрется в железо ноутбука. я писал похожую прогу, где дата грид(правда один) обнавлялся так же, по фокусу, при добавлении и пр. на компе котором писал ему памяти хватало, а когда челу отдал у него все как в слайд шоу, но у него при этом комп древний (целерон 1,5 и 256 ОЗУ) и при таком раскладе я посчитал это нормальным. особенно если учесть все моменты твоего кода(если даже оставить абсолютную нечитаемость) например работы со строками, плюс количество запуска этого (да наверняка и других подобных) методов, среда может просто не успевать за твоей прогой.
Добавлено через 7 минут и 27 секунд опять же я думаю что такая вещь как "зверь" это вообще смерть для компа, и ставить ее могут только криворукая школота, которая хочет все и сразу, не задумываясь а для чего это все нужно и как это все будет работать вместе. я реально не видел что бы с подобными вещами кто то мог нормально работать. у меня сосед нахваливает, и переустанавливает ее каждую неделю, потому что начинает по его словам "тупить". |
|||
|
||||
| Hobotanius |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Очень полноценное предложение. Я наверное должен быть телепатом чтоб тебя понять.
Я тебе ни чё не предлагаю.
Ты читать внимательно умеешь?
Судя по количеству тобой написаных постов - ты круто во всём разбираешься... Только люди хорошо разбирающиеся не пишут в таком тоне. Ты пренериятный собеседник и поэтому мне не нужны твои советы. Видя темы моего авторства - проходи мимо не задерживайся... |
||||||||
|
|||||||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
Hobotanius, ну так как? конфигурацию целевой машины можешь озвучить?
|
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 7 Всего: 306 |
мне до тебя далеко.
прорвало? |
||||
|
|||||
| Ram1reS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 25.4.2008 Где: Москва Репутация: 3 Всего: 5 |
Почитайте про класс StopWatch, и замерьте время выполнения разных участков кода на буке заказчика, будет яснее где конкретно проблема.
--------------------
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |