我是一个有用的助手,可以为您进行翻译。以下是需要翻译的内容:
所以我现在不再实例化任何表单,只是测试。
2. 结果
在调试模式下,我的经过时间大约为 200ms,在发布模式下需要大约 1.2s。
3. 其他信息
奇怪的是,当我尝试将该解决方案中的其他项目设置为启动项目时,因为在这种情况下它可以快速工作(与上述完全相同的代码)。
4. 快速 hack
为了尽快修复这个 bug,我在我的解决方案中创建了一个新的 .exe 启动项目,通过引用我的第一个入口项目来实例化和运行主应用程序表单。在这种情况下,它再次快速工作,我的入口 exe 现在只有 24kb 大小,只包含一个静态的 Main 方法。
有人遇到过类似的行为吗?如果我在其他地方遇到这个问题,通过查看上面的代码,我可能会认为存在一个静态初始化程序,在单独的线程中执行大量工作(但这里并非如此),而且仅在 Release 构建中运行?
[编辑] 更多信息:我知道 XmlSerializer 在运行时生成 IL 代码,但我的实际问题是为什么它在这种情况下比其他情况慢。当我只对实际序列化进行基准测试时,在 Release 中速度要慢 3 倍(但只有在我从初始项目运行它时)。
[更新] 现在是最奇怪的部分:经过几个修改/重建步骤后,我的新入口项目开始像第一个项目一样表现缓慢 - 启动缓慢,加载缓慢。我更改了项目名称和 GUID 并重新构建了它,现在它又快速工作了。
在过去几天中,我遇到了一件奇怪的事情。我发现我的发布版本实际上比调试版本执行速度更慢。
1. 问题
最终,我从我的Windows Forms exe入口点(Main)中剥离了所有的东西,只留下这些:
[STAThread]
static void Main(params string[] args)
{
Stopwatch sw = Stopwatch.StartNew();
System.Xml.Serialization.XmlSerializer xmlS =
new System.Xml.Serialization.XmlSerializer(typeof(TestClass));
sw.Stop();
MessageBox.Show(sw.Elapsed.ToString());
}
所以我现在不再实例化任何表单,只是测试。
TestClass
是一个小类,只有三个公共的 int
属性,没有其他东西。我的主要 .exe(Windows 表单)大约为 1Mb,如果这有任何区别的话。2. 结果
在调试模式下,我的经过时间大约为 200ms,在发布模式下需要大约 1.2s。
3. 其他信息
奇怪的是,当我尝试将该解决方案中的其他项目设置为启动项目时,因为在这种情况下它可以快速工作(与上述完全相同的代码)。
4. 快速 hack
为了尽快修复这个 bug,我在我的解决方案中创建了一个新的 .exe 启动项目,通过引用我的第一个入口项目来实例化和运行主应用程序表单。在这种情况下,它再次快速工作,我的入口 exe 现在只有 24kb 大小,只包含一个静态的 Main 方法。
有人遇到过类似的行为吗?如果我在其他地方遇到这个问题,通过查看上面的代码,我可能会认为存在一个静态初始化程序,在单独的线程中执行大量工作(但这里并非如此),而且仅在 Release 构建中运行?
[编辑] 更多信息:我知道 XmlSerializer 在运行时生成 IL 代码,但我的实际问题是为什么它在这种情况下比其他情况慢。当我只对实际序列化进行基准测试时,在 Release 中速度要慢 3 倍(但只有在我从初始项目运行它时)。
[更新] 现在是最奇怪的部分:经过几个修改/重建步骤后,我的新入口项目开始像第一个项目一样表现缓慢 - 启动缓慢,加载缓慢。我更改了项目名称和 GUID 并重新构建了它,现在它又快速工作了。