10

我们最近将我们的一个 Winforms 项目从 Visual Studio 2008 迁移到 Visual Studio 2012。过渡非常顺利,一切都构建得很好,但是我们现在正与运行速度非常慢的 winforms 设计器作斗争。

举个例子,如果我们打开一个小表单(该表单包含两个文本框、一个数字上下和两个按钮 - 所有标准内置控件,没有第 3 方),但在 2012 年大约需要 40-45 秒在 2008 年,它将在 1 或 2 秒内打开。对于我们更大的形式,这种差异更加明显。在 2008 年,打开表单大约需要 7 秒,但在 2012 年,它需要超过 6 分钟。最糟糕的是这是一个阻塞动作,VS2012 在打开表单时几乎完全没有响应。只需单击表单的 .h 也会发生这种情况,因此我们不能仅仅通过坚持代码本身就可以轻松避免它。

有没有其他人经历过这个?有谁知道它为什么会发生,以及是否有什么可以做的?

附加信息:我们的应用程序是 C++/CLI winforms 应用程序。在我们所有运行 Windows 7 x64 的开发机器上都可以看到这种行为。我的机器是具有 12Gb RAM 的 Core i7 860 CPU(当我对上述内容进行基准测试时,现在有超过 60% 的空闲空间)——我想已经足够了。无论如何,我的系统绝不是运行缓慢,它只是 VS2012 设计器。

编辑:只是为了进一步澄清,我们没有安装任何插件或类似的东西。这是一个原始的 VS2012 安装。

EDIT2:它似乎也不是网络问题。

4

6 回答 6

4

我不知道延迟的原因,但我可以告诉你一种确定原因的方法。使用 Visual Studio 的另一个实例对其进行调试。附加到 devenv.exe 进程:调试 Visual Studio

如果你偶尔中断所有线程,在延迟期间,从统计学上讲,你很可能会找到一个堆栈,其中包含导致延迟的调用。这是一个“穷人的分析器”,但效果很好。我之前曾使用此技术来发现和报告 Visual Studio 2010 设计器代码生成器(Microsoft 未修复)中的回归性能变化。

于 2012-10-18T17:04:29.207 回答
0

我在 Visual Studio 2010 上,我遇到了同样的事情。当我在设计器中并单击相应的 .h 文件或向 GUI 添加另一个元素时,VS 开始“计算”设计的新代码并完全阻塞 CPU 以完全挂起。

我的 Windows 窗体包含很多元素。随着时间的推移,随着我向用户界面添加越来越多的内容,从设计器到代码的切换变得越来越慢。目前,每次我更改设计中的任何内容时,从设计器切换到代码大约需要 4 分钟(!!!)。

正如我所看到的,它不可能是网络问题。更多的是VS本身的问题,无法快速有效地计算代码。

于 2013-01-11T19:41:42.110 回答
0

我认为我遇到了同样的问题(尽管是VS2013),但也许我所观察到的可能对其他人有帮助......我责怪我从 32 位 WinXP 升级到 64 位 Win7。这就是为什么。

以前我在 WinXP 机器上安装了 VS2008 Express。主板坏了,所以我得到了一台闪亮的新 Windows 7 机器。相比之下,这款新机器配备了 SSD、两倍的内存和更快的处理器,速度非常快。

最初我安装了 VS2008,但在我有机会使用表单编辑器之前,我意识到出于其他原因我需要 VS2013。所以仍然安装了两个版本的 Visual Studio。

猜猜看,在我超快的 Windows 7 机器上,两个版本的 Visual Studio 都有一个非常慢的表单编辑器。我有一个非常复杂的表单,我已将其加载到两个版本的 VS 中。除了已移植到 Visual Studio 2013 之外,该表单是相同的。

这台计算机使用时间不到 2 周,我相信它没有恶意软件。

我还注意到,在任一版本的 Visual Studio 中,当我单击表单设计器中的任何控件时,在延迟期间鼠标指针会在几秒钟内变为指针和“大小”光标,并且两者都是半透明的......这告诉我它在两者之间快速交替鼠标光标,速度如此之快,以至于它们都显得半透明。

我的猜测是 Windows 7 具有不同的图形渲染方式,尤其是在表单编辑器中。(顺便说一句,我们是在查看表单编辑器中的真实控件,还是只是它们的图形表示?显然它们在表单编辑器中“不起作用”。)

我尝试将主题切换为“Windows 经典”(没有半透明、方角和灰色背景),但没有明显区别。

于 2014-04-25T18:39:05.797 回答
0

我无法为解决这个问题提供任何指导。但我可以告诉你,我也有。它发生在 Visual Studio 2010 和 2012 中。我使用没有 WPF 的 Windows 窗体,所以我认为问题与此无关。

于 2013-02-06T17:40:11.993 回答
0

好的,所以这个问题已经开放了一年多了,没有人能想出一个具体的答案来解释为什么 winform 设计器这么慢。

我最近回到 VS2012 并更新到 Update 3。尽管倾注了各种发行说明,但我没有看到任何提及这方面的性能提升,但我很高兴地报告设计师现在快得多了

只是为了稍微混淆一下,我的开发机器自从我最初发布后已经升级,我现在使用 AMD FX-8350 CPU、16GB RAM 和 SSD。刚拿到这台新机的时候,第一时间尝试的是VS2012,发现还是和以前一样慢。现在它能够在大约 15 秒内加载过去需要 6 分钟以上的相同表单。这仍然是 VS2008 的近两倍,但我可以忍受它,因为它是 360s+ 的巨大飞跃。我只提到这一点是因为我无法确定设计器中是否修复了错误,或者只是性能改进 - 可能使用了额外的处理器内核。换句话说,您的里程可能会有所不同,但如果您尚未尝试过,请尝试安装 Update 3。

您可以在此处下载更新 3:http: //www.microsoft.com/en-us/download/details.aspx?id=39305

于 2013-10-29T15:53:01.083 回答
0

尝试将 C++ 项目的编译器设置从 /clr:pure 更改为 /clr。

于 2015-12-18T10:46:41.677 回答