【发布时间】:2011-02-04 15:49:21
【问题描述】:
我正在使用 MySql Connector .NET 加载帐户并将其传输到客户端。 考虑到要加载的帐户的子元素,此操作相当密集。
在调试模式下,加载帐户最多需要 1 秒。平均值为 500 毫秒。 在发布模式下,加载帐户需要 1 到 4 秒。平均为 1500 毫秒。
由于我的代码中没有#if DEBUG 指令等,我想知道差异来自哪里。
是否有我可以更改的项目构建选项?或者它是否与 MySql Connector .NET 有关,根据构建模式会有不同的行为?
编辑:蜱监测。
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
比较:
发布时间是调试时间的 20 倍(平均比较)。
4,404,500 / 213,000 = 20
现在第一次操作确实比较长,但是一般来说,其他时间都是这样的。 有什么想法吗?
编辑 2:我添加了更广泛的测试来计算总时间。对于 50 个帐户加载,调试平均需要 4 秒,发布平均需要 40 秒。我开始对此感到非常绝望——这对我的应用程序来说是一个严重的性能问题。有没有人猜测如何解决这个问题?
【问题讨论】:
-
您如何记录加载帐户所需的时间?您是否在一个循环中多次执行该操作并取平均值?还是您每次都将应用程序作为新进程启动?
-
有一个区别,除了它通常是相反的,因为代码优化不会在调试模式 iirc 中发生。不过我可以肯定地说,在我从事的任何项目中,mysql .net 连接器从来没有像我自己那样表现过。
-
使用分析器。其他一切都在猜测。
-
我监控了时间。主要问题将在 1 秒内编辑完毕。
-
@Lazlo 更新了我的答案 - 也许是垃圾收集?
标签: c# .net mysql mysql-connector