powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Сильно тормозит клиент на некоторых машинах
18 сообщений из 18, страница 1 из 1
Сильно тормозит клиент на некоторых машинах
    #38455476
АлекейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Ситуация такая. Net 4.0. В приложении есть код, который заполняет DataTable. На своем компе и на виртуальной машине пробовал, отрабатывает менее одной секунды, глазом не заметно. У клиента висит 3-1,5 минуты, в зависимости от того, на каком компьютере запускается. Антивирусы, говорит, отключал, но все равно тормоза. Компы у него мощнее. Ес-но, что скорость работы запроса к базе сверяли - одинаковая. Тормоз именно на чтении DataReader'a и заполнении DataTable. У себя не могу смоделировать, все отрабатывает почти мгновенно. Набор возвращаемых данных мизерный ~2000 строк. СУБД MS SQL. В какую сторону покопать? Будут идеи?
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455669
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем мерили? интересно как вы узнал что именно DataReader. Да и код заполнения бы поглядеть.
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455744
АлекейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЧем мерили
Код: plaintext
1.
2.
3.
4.
5.
declare @t1 datetime
declare @t2 datetime
set @t1 = getdate()
Exec dbo.GetKontragentDepend 6
set @t2 = getdate()
select datediff(ms, @t1, @t2) as time_execute


Время выполнения этого запроса примерно одинаковое и равно ~0.5 сек

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
while(reader.Read())
{
       row = table.NewRow();

       for (int g = 0; g < ar.Length/2; g++)
           row[ar[1, g]] = reader[ar[0, g]];

        table.Rows.Add(row);
}

Где ar, это int [,] ar, соотносит индекс столбца в ридере с индексом столбца в таблице.

Этот цикл у клиента тормозит, а у меня нет, причем на разных машинах с его стороны и с моей. Сначала думал, что не тот экзешник запускается, но потом уже на форме пометки сделал, тот.
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455748
Dmitry Gurianov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлекейК, там сложная хранимка или просто селект?
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455758
Dmitry Gurianov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455774
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем такую сложную логику по заполнению DataTable? не проще ли ?или есть какая то особенность ?
Код: c#
1.
2.
3.
var da = new SqlDataAdapter(cmd);
var tbl = new DataTable();
da.Fill(tbl);


п.с. а в коде ставили замеры? поставьте stopwatch и в логи выводите что происходит.
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455837
АлекейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторАлекейК, там сложная хранимка или просто селект?

В хранимке просто несколько селектов, каждый из которых имеет 1 inner join, то есть возвращается несколько наборов данных. Но я выше уже упоминал, время выполнения запроса одинаковое.

авторне ваш случай?
Почитаю

авторп.с. а в коде ставили замеры? поставьте stopwatch и в логи выводите что происходит.
Где поставить? У меня проблем нет, доступа к клиенту не имею.

авторзачем такую сложную логику по заполнению DataTable? не проще ли ?или есть какая то особенность ?
Да есть, нюанс. В конечном, счете Fill использует то же самый DataReader
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455866
Dmitry Gurianov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлекейКНо я выше уже упоминал, время выполнения запроса одинаковое.
Красота в глазах смотрящего ;)
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455916
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлекейКВ хранимке просто несколько селектов, каждый из которых имеет 1 inner join, то есть возвращается несколько наборов данных. Но я выше уже упоминал, время выполнения запроса одинаковое.
Ну так грузи сразу в датасет.

Код: c#
1.
2.
3.
4.
5.
var dataset = new DataSet();
using (var adapter = new SqlDataAdapter(command))
{
    adapter.Fill(dataset);
}
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38455971
АлекейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получиться как надо, только если часть логики переписать. И потом адаптер все равно использует datareader, рефлектором смотрел, ничего нового там нет.

Раньше была строка - это был тормоз

row[redaer.GetName(i)] = reader[i];

Убрал, сделал обращение по индексу, все стало летать, но только у меня.
row[ar[1, g]] = reader[ar[0, g]];
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38456024
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлекейКНе получиться как надо, только если часть логики переписать.
Ну переписывай. Зато будет как надо.

АлекейКИ потом адаптер все равно использует datareader, рефлектором смотрел, ничего нового там нет.
Уберется твой гавнокод, который кроме проблем ничего не обещает. Задача решается в 3 строчки.

АлекейКУбрал, сделал обращение по индексу, все стало летать, но только у меня.
А уберешь вообще этот мрак, глядишь и у всех заработает.
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38456064
АлекейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>МСУ
Если сказать нечего, ветку спамом не забивайте
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38456491
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлекейКЕсли сказать нечего, ветку спамом не забивайте
Я тебе уже сказал, что делать. Если это "спам", то можешь убить себя об стену или отравиться ядом.
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38456515
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>АлекейК, сегодня, 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];
}

В любом случае, найдёте причину, причину, отпишитесь. Интересно.

С уважением, Владимир.
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38456605
Dmitry Gurianov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну не могут 2000 строк на клиенте подгружаться куда-либо 3 минуты, если они все пришли :)
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38457298
АлекейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЯ тебе уже сказал, что делать. Если это "спам", то можешь убить себя об стену или отравиться ядом.

Я же вам говорил, что адаптер использует ридер для загрузки данных. Не доходит? Декомпиль и посмотри, коль такой умный. Изначально данные загружались через адаптер. Быстрее от этого не работало.

авторВ любом случае, найдёте причину, причину, отпишитесь. Интересно.

Без разницы, как загружать данные в
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38457299
АлекейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DataSet. В цикле создавать строки, присваивать им значения не посредственно полям, делать ImportRow, заполнять адаптером. Работает везде мгновенно, кроме как у клиента. Скину ему сегодня новый экзешник, который все подробно залогирует, тогда может и понятно станет.

авторну не могут 2000 строк на клиенте подгружаться куда-либо 3 минуты, если они все пришли :)

Я думал сначала, что это шутка такая.
...
Рейтинг: 0 / 0
Сильно тормозит клиент на некоторых машинах
    #38457392
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлекейКЯ же вам говорил, что адаптер использует ридер для загрузки данных. Не доходит?
Ты глупый, что ли? Ридер может использовать кто угодно и где угодно. Я тебе десятый раз повторяю, убери свой гавнокод и проверь работу на адаптере. Не доходит что ли?

АлекейКДекомпиль и посмотри, коль такой умный. Изначально данные загружались через адаптер. Быстрее от этого не работало.
Тут гадалок нет, чтобы понять как и что у тебя работало. Что мешало изначально сказать, что уже пробовал адаптер? А то начинаешь спорить и метать слюну, а потом признаешься, что уже пробовал этот способ.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Сильно тормозит клиент на некоторых машинах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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