Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Быстродействие при отладке  [new]
haicon
Member

Откуда:
Сообщений: 59
Добрый день.
Может кто сталкивался с проблемой быстродействия при отладке приложения.
Заметил, что, если приложение запусать без отладки приложение, грузиться около минуты. но при отладке может грузиться 15-20 минут. Так же при работе приложения в отладке приложение притормаживает в основном при работе с бд. Я понимаю, что при отладке неизбежно приложение будет работать медленнее, но не в 15-20 раз. Профилирование программы показало, что в основном тормаза возникают при работе с бд. а конкретно 98% занимает выолнение
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior, String).
29 янв 21, 20:06    [22271384]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
L.Otujktd
Member

Откуда:
Сообщений: 111
haicon,

Советую посмотреть профилировщиком где больше всего тратится процессорного времени при запуске.
Также возможно где-то есть проверка на макрос debug и выполняется другая ветка, более медленная
29 янв 21, 20:14    [22271388]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22306
haicon
основном тормаза возникают при работе с бд
ну так это не приложение надо профилировать, а запросы к БД оптимизировать, индексы и т.п.

Минуту на запуск без отладки? Круто. Тут точно не с отладкой надо разбираться, а с запросами.
29 янв 21, 20:52    [22271411]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
Dima T
Member

Откуда:
Сообщений: 15698
haicon
без отладки приложение, грузиться около минуты

Это много! 5 сек еще можно потерпеть, ну 10 если очень уважаешь, но не минуту.
29 янв 21, 21:12    [22271416]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6154
Dima T
Это много! 5 сек еще можно потерпеть, ну 10 если очень уважаешь, но не минуту.

Ну, можно какую-нить сплэшку показать. Ничего, люди терпят. Знаю тех, что примерно минуту и любуется на сплэш SSMS.
Shocker.Pro
haicon
основном тормаза возникают при работе с бд
ну так это не приложение надо профилировать, а запросы к БД оптимизировать, индексы и т.п.
Минуту на запуск без отладки? Круто. Тут точно не с отладкой надо разбираться, а с запросами.

Насколько мне известно, запросы индифферентны к Debug/Release, там работают несколько другие факторы.
29 янв 21, 21:17    [22271422]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
Dima T
Member

Откуда:
Сообщений: 15698
Сон Веры Павловны
Dima T
Это много! 5 сек еще можно потерпеть, ну 10 если очень уважаешь, но не минуту.

Ну, можно какую-нить сплэшку показать. Ничего, люди терпят. Знаю тех, что примерно минуту и любуется на сплэш SSMS.

Если некуда деваться, то терпят, смотрят на ... . Но это разве нормально? Я с линукса на виндавс вернулся потому что вроде быстро, но потом сплэшка и по времени я проиграл.
29 янв 21, 21:22    [22271426]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22306
Наверняка из БД что-то читается. Я бы не сплешку показал, а неполноценный интерфейс, и по мере подгрузки нужных данных, появлялась бы нужная функциональность.

А у ТС приложение, судя по ExecuteReader вместо ExecuteReaderAsync, не про асинхронность.
29 янв 21, 21:47    [22271438]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
haicon
Member

Откуда:
Сообщений: 59
Проблема точно не в ветлении кода на Debug\Release, так запуск программы под Debeug и release без отладки примерно одинаково приемлимое. Вся просадка происходит в отладке. И именно в обращении к БД. Запросы к БД идут одинаковые не зависящие от релиза или отладки. оптимизация тут не причем так как при загрузке без отладки и с отладкой идут одинаковые и профилировщик бд выдает также приемлимые данные.
для наглядности рофилировка

97,31 % ExecuteReader • 417 719 ms • System.Data.Common.DbCommand.ExecuteReader(CommandBehavior)
97,31 % ExecuteDbDataReader • 417 719 ms • System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior)
97,31 % ExecuteReader • 417 719 ms • System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior, String)
7,88 % RunExecuteReader • 33 832 ms • System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior, RunBehavior, Boolean, String)
7,88 % RunExecuteReader • 33 832 ms • System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior, RunBehavior, Boolean, String, TaskCompletionSource, Int32, out Task, out Boolean, Boolean, Boolean)
7,85 % RunExecuteReaderTds • 33 679 ms • System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior, RunBehavior, Boolean, Boolean, Int32, out Task, Boolean, Boolean, SqlDataReader, Boolean)
7,59 % FinishExecuteReader • 32 564 ms • System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader, RunBehavior, String, Boolean, Boolean, Boolean)
7,57 % get_MetaData • 32 513 ms • System.Data.SqlClient.SqlDataReader.get_MetaData
7,57 % TryConsumeMetaData • 32 504 ms • System.Data.SqlClient.SqlDataReader.TryConsumeMetaData
7,57 % TryRun • 32 504 ms • System.Data.SqlClient.TdsParser.TryRun(RunBehavior, SqlCommand, SqlDataReader, BulkCopySimpleResultSet, TdsParserStateObject, out Boolean)
7,50 % TryReadByte • 32 211 ms • System.Data.SqlClient.TdsParserStateObject.TryReadByte(out Byte)
7,50 % TryPrepareBuffer • 32 211 ms • System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer
7,50 % TryReadNetworkPacket • 32 203 ms • System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket
7,50 % ReadSniSyncOverAsync • 32 195 ms • System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync
7,47 % SNIReadSyncOverAsync • 32 054 ms • SNINativeMethodWrapper.SNIReadSyncOverAsync(SafeHandle, ref IntPtr, Int32)
0,00 % [Garbage collection] • 18 ms
0,03 % 4 functions hidden • 140 ms total
0,00 % TryProcessHeader • 8 ms • System.Data.SqlClient.TdsParserStateObject.TryProcessHeader
►0,06 % TryProcessMetaData • 244 ms • System.Data.SqlClient.TdsParser.TryProcessMetaData(Int32, TdsParserStateObject, out _SqlMetaDataSet, SqlCommandColumnEncryptionSetting)
0,01 % 3 functions hidden • 33 ms total
0,00 % get_IsClosed • 9 ms • System.Data.SqlClient.SqlDataReader.get_IsClosed
0,01 % 2 functions hidden • 34 ms total
►0,14 % TdsExecuteRPC • 622 ms • System.Data.SqlClient.TdsParser.TdsExecuteRPC(SqlCommand, _SqlRPC[], Int32, Boolean, SqlNotificationRequest, TdsParserStateObject, Boolean, Boolean, TaskCompletionSource, Int32, Int32)
0,06 % 5 functions hidden • 252 ms total
►0,05 % ValidateAndReconnect • 225 ms • System.Data.SqlClient.SqlConnection.ValidateAndReconnect(Action, Int32)
0,03 % 2 functions hidden • 144 ms total
0,02 % 4 functions hidden • 71 ms total
1 фев 21, 01:25    [22272246]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие при отладке  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22306
Так что тут удивительного-то? Без подключения отладчика/профилировщика расклад будет точно такой же. Синхронный метод ExecuteReader тупо тратит время на ожидание долгой операции обращения к БД.

Ты лучше покажи результат профилирования обращений к БД. Может быть у тебя там в цикле миллион обращений к БД идет. А то на этом трейсе даже количества вызовов не видно.
1 фев 21, 01:42    [22272247]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить