Я использую MySql Connector .NET для загрузки учетной записи и передачи ее клиенту. Эта операция довольно интенсивна, учитывая, что дочерние элементы учетной записи загружаются.Есть ли разница в производительности между Debug и Release?
В режиме отладки для загрузки учетной записи требуется не более 1 секунды. Среднее будет 500 мс. В режиме деблокирования для загрузки аккаунта требуется от 1 до 4 секунд. Среднее будет 1500 мс.
Поскольку в моем коде нет директивы #if DEBUG
или тому подобного, мне интересно, откуда эта разница.
Есть ли вариант построения проекта, который я мог бы изменить? Или это связано с MySql Connector .NET, который будет иметь разные типы поведения в зависимости от режима сборки?
EDIT: Мониторинг клещей.
Debug (Average: 213000 ticks)
730000
320000
60000
50000
190000
130000
210000
180000
160000
110000
390000
270000
150000
190000
230000
210000
150000
200000
190000
140000
Release (Average: 4404500 ticks)
12940000
170000
180000
80000
80000
130000
120000
5060000
5090000
130000
50000
10430000
25160000
150000
160000
130000
17620000
10160000
100000
150000
Сравнение:
Release занимает 20x время отладки принимает (среднее сравнение).
4.404.500/213.000 = 20
В настоящее время первая операция на самом деле больше, но в целом, так и все другие времена для освобождения. Любая идея?
EDIT 2: Я добавил еще более широкие тесты, которые вычисляют общее время. Для 50 учетных записей в debug требуется в среднем 4 секунды, а в релизе - 40 секунд. Я начинаю отчаянно беспокоиться об этом - это серьезная проблема производительности для моего приложения. Кто-нибудь может предположить, как это исправить?
Как вы регистрируете время, необходимое для загрузки учетной записи? Вы выполняете операцию несколько раз в цикле и принимаете среднее значение? Или вы запускаете приложение как новый процесс каждый раз? –
Есть разница, за исключением того, что это вообще наоборот, поскольку оптимизация кода не происходит в режиме отладки iirc. Я могу сказать наверняка, что соединитель mysql .net никогда не вел себя так для себя в любых проектах, над которыми я работал. –
Используйте профилировщик. Все остальное гадает. –