【问题标题】:Hiding label in Windows Form takes 244 ms在 Windows 窗体中隐藏标签需要 244 毫秒
【发布时间】:2011-11-21 14:48:15
【问题描述】:

我正在尝试查看是否可以找到问题的根源。我正在尝试在超薄/紧凑型计算机上使用 .NET 4.0。添加StopWatch 运行应用程序时,只需244 ms 即可运行label.visible = false; 的简单行,而在我的计算机上只需要22 ms。代码的其他部分运行 100% 正常,只是这个区域。这可能是什么原因造成的?

这是我尝试在其上运行应用程序的系统。我知道它是一台便宜的计算机,但这是唯一将在其上运行的应用程序。我已经检查并卸载了 Acer 安装的所有默认程序并运行了所有 Windows 更新。

Amazon.com - Acer Aspire Revo AR3700-U3002 Slim and Compact Desktop

产品特点

  • 1.8 GHz Intel Atom D525 双核处理器
  • 已安装 2 GB DDR3 RAM
  • 250 GB SATA 硬盘驱动器 (5400 RPM)
  • 集成 nVIDIA 离子图形
  • Windows 7 家庭高级版

处理器、内存和主板

  • 硬件平台:未知
  • 处理器:1.8 GHz Intel Atom
  • 处理器数量:1
  • 内存:2 GB
  • RAM 类型:未知
  • 内存插槽:2

硬盘

  • 大小:250 GB
  • 类型:未知
  • 速度:5400 转

【问题讨论】:

  • 那么是标题 244 毫秒还是正文 244 秒?
  • 还:在上下文中显示有问题的代码
  • 你如何(在地球上)分析这条线需要 244 毫秒?我猜它只是被执行了一百万次:)
  • 其中一个问题是您正在连接字符串(至少,我认为Config.Application.debugLoggs 是一个字符串),这将对您的计时产生很大影响。你只调用一次吗?如果是这样,那么 JIT 时间将是一个因素。如果在第一次调用之后再次调用它是否需要 244 毫秒?此外,如果您在调试模式下计时,或者连接了调试器,您的计时将完全不可靠。
  • 尝试在发布模式下运行相同的应用程序并使用 StringBuilder 类构建调试输出。也只是为了这个测试尝试减少日志记录开销,看看你是否得到更快的响应。

标签: c# .net winforms visual-studio-2010


【解决方案1】:

实际上,这也可能取决于您正在开发的平台。在 Windows 7/Vista 中删除了 GDI+ 加速。因此,使所有 GDI+ 操作,甚至是简单的操作,例如隐藏/显示表单,都变得慢得多。

这是在 Windows Server 2008 中未删除但已在 Windows Server 2008 R2 中删除的一件事。因此,如果您的开发机器使用的是 Windows XP 或更低版本,或者 Windows Server 2008 或更低版本,它可能会比类似的 Windows 7 或 Windows Vista 机器快得多。

不管硬件加速如何,也可以对显卡进行比较。低端机器上的内置显卡,很少与开发机器中包含的显卡相比。

其他性能问题是非常缺乏 RAM(特别是如果它运行 64 位),如果它没有足够的 RAM,它可能会将 GDI 调用推送到非常慢的硬盘驱动器 (5400 rpm)。

尝试在 WPF 中实现相同的测试?如果 WPF 中的速度非常相似,则可能是由于视频/硬件加速问题或内存问题,因为 WPF 受益于完整的 3D 硬件加速,并且主要将视频内存用于 UI 而不是系统 RAM。

【讨论】:

  • 抱歉延迟回复。我没有用 WPF 测试过,因为整个程序是用 Windows 窗体编写的,并且真的不想重写它。我试图将内存从 2gb 提升到 4gb 只是为了看看差异,但很难找到内存。这是使用 Win7 Home Prem 64bit。这台电脑只有 200 美元,因为我试图以最便宜的方式运行这个软件,但听起来我需要更好的硬件?
【解决方案2】:

多次运行该示例并获取更多信息。特别是连续多次调用 StopWatch 来检查它支持的分辨率。

Jit 编译在慢速机器上也可能非常慢,因此请多次运行它或 NGEN 代码。

检查硬件是否以全性能运行,而不是“最低 cpu 速度”等。切换到省电模式的笔记本电脑可能真的很慢。

通过实现自定义绘图,您可以查看绘图操作或“事件”操作是否一直在进行。

还要检查您是否有许多正在运行的应用程序,一些笔记本电脑预装了一大堆软件,这会使机器慢下来。

简而言之,请为我们提供更多信息。调试一下哪部分操作慢了再反馈给我们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 2013-08-18
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多