|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
Всем привет. Ситуация такая. Net 4.0. В приложении есть код, который заполняет DataTable. На своем компе и на виртуальной машине пробовал, отрабатывает менее одной секунды, глазом не заметно. У клиента висит 3-1,5 минуты, в зависимости от того, на каком компьютере запускается. Антивирусы, говорит, отключал, но все равно тормоза. Компы у него мощнее. Ес-но, что скорость работы запроса к базе сверяли - одинаковая. Тормоз именно на чтении DataReader'a и заполнении DataTable. У себя не могу смоделировать, все отрабатывает почти мгновенно. Набор возвращаемых данных мизерный ~2000 строк. СУБД MS SQL. В какую сторону покопать? Будут идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 05:57 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
чем мерили? интересно как вы узнал что именно DataReader. Да и код заполнения бы поглядеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 10:52 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
авторЧем мерили Код: plaintext 1. 2. 3. 4. 5.
Время выполнения этого запроса примерно одинаковое и равно ~0.5 сек Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Где ar, это int [,] ar, соотносит индекс столбца в ридере с индексом столбца в таблице. Этот цикл у клиента тормозит, а у меня нет, причем на разных машинах с его стороны и с моей. Сначала думал, что не тот экзешник запускается, но потом уже на форме пометки сделал, тот. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 11:33 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
АлекейК, там сложная хранимка или просто селект? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 11:35 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
АлекейК, Code that accesses the database, such as ADO.NET, OLE DB, or ODBC, can have an effect on database performance не ваш случай? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 11:42 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
зачем такую сложную логику по заполнению DataTable? не проще ли ?или есть какая то особенность ? Код: c# 1. 2. 3.
п.с. а в коде ставили замеры? поставьте stopwatch и в логи выводите что происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 11:47 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
авторАлекейК, там сложная хранимка или просто селект? В хранимке просто несколько селектов, каждый из которых имеет 1 inner join, то есть возвращается несколько наборов данных. Но я выше уже упоминал, время выполнения запроса одинаковое. авторне ваш случай? Почитаю авторп.с. а в коде ставили замеры? поставьте stopwatch и в логи выводите что происходит. Где поставить? У меня проблем нет, доступа к клиенту не имею. авторзачем такую сложную логику по заполнению DataTable? не проще ли ?или есть какая то особенность ? Да есть, нюанс. В конечном, счете Fill использует то же самый DataReader ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 12:21 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
АлекейКНо я выше уже упоминал, время выполнения запроса одинаковое. Красота в глазах смотрящего ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 12:33 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
АлекейКВ хранимке просто несколько селектов, каждый из которых имеет 1 inner join, то есть возвращается несколько наборов данных. Но я выше уже упоминал, время выполнения запроса одинаковое. Ну так грузи сразу в датасет. Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 12:55 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
Не получиться как надо, только если часть логики переписать. И потом адаптер все равно использует datareader, рефлектором смотрел, ничего нового там нет. Раньше была строка - это был тормоз row[redaer.GetName(i)] = reader[i]; Убрал, сделал обращение по индексу, все стало летать, но только у меня. row[ar[1, g]] = reader[ar[0, g]]; ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 13:13 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
АлекейКНе получиться как надо, только если часть логики переписать. Ну переписывай. Зато будет как надо. АлекейКИ потом адаптер все равно использует datareader, рефлектором смотрел, ничего нового там нет. Уберется твой гавнокод, который кроме проблем ничего не обещает. Задача решается в 3 строчки. АлекейКУбрал, сделал обращение по индексу, все стало летать, но только у меня. А уберешь вообще этот мрак, глядишь и у всех заработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 13:26 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
>МСУ Если сказать нечего, ветку спамом не забивайте ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 13:37 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
АлекейКЕсли сказать нечего, ветку спамом не забивайте Я тебе уже сказал, что делать. Если это "спам", то можешь убить себя об стену или отравиться ядом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 16:32 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
>АлекейК, сегодня, 11:33 [15089655] > ... for (int g = 0; g < ar.Length/2; g++) row[ar[1, g]] = reader[ar[0, g]]; А если так: for (int g = 0; g < ar.Length/2; g++) { int i,j; i=ar[1, g]; j=ar[0, g]; row[i] = reader[j]; } В любом случае, найдёте причину, причину, отпишитесь. Интересно. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 16:39 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
ну не могут 2000 строк на клиенте подгружаться куда-либо 3 минуты, если они все пришли :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 17:15 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
авторЯ тебе уже сказал, что делать. Если это "спам", то можешь убить себя об стену или отравиться ядом. Я же вам говорил, что адаптер использует ридер для загрузки данных. Не доходит? Декомпиль и посмотри, коль такой умный. Изначально данные загружались через адаптер. Быстрее от этого не работало. авторВ любом случае, найдёте причину, причину, отпишитесь. Интересно. Без разницы, как загружать данные в ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2013, 05:52 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
DataSet. В цикле создавать строки, присваивать им значения не посредственно полям, делать ImportRow, заполнять адаптером. Работает везде мгновенно, кроме как у клиента. Скину ему сегодня новый экзешник, который все подробно залогирует, тогда может и понятно станет. авторну не могут 2000 строк на клиенте подгружаться куда-либо 3 минуты, если они все пришли :) Я думал сначала, что это шутка такая. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2013, 06:00 |
|
Сильно тормозит клиент на некоторых машинах
|
|||
---|---|---|---|
#18+
АлекейКЯ же вам говорил, что адаптер использует ридер для загрузки данных. Не доходит? Ты глупый, что ли? Ридер может использовать кто угодно и где угодно. Я тебе десятый раз повторяю, убери свой гавнокод и проверь работу на адаптере. Не доходит что ли? АлекейКДекомпиль и посмотри, коль такой умный. Изначально данные загружались через адаптер. Быстрее от этого не работало. Тут гадалок нет, чтобы понять как и что у тебя работало. Что мешало изначально сказать, что уже пробовал адаптер? А то начинаешь спорить и метать слюну, а потом признаешься, что уже пробовал этот способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2013, 09:41 |
|
|
start [/forum/topic.php?fid=17&fpage=23&tid=1349900]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 158ms |
0 / 0 |