【问题标题】:Same Direct2D application performs better on a "slower" machine相同的 Direct2D 应用程序在“较慢”的机器上表现更好
【发布时间】:2016-08-05 16:38:09
【问题描述】:

我编写了一个显示一定数量图形的 Direct2D 应用程序。

当我运行这个应用程序时,大约需要 4 秒才能在我的笔记本上显示 700,000 个图形元素:

Intel Core i7 CPU Q 720 1.6 GHz
NVIDIA Quadro FX 880M

根据Direct2D MSDN page

Direct2D 是使用 Direct3D 10.1 构建的用户模式库 API。这意味着 Direct2D 应用程序受益于 现代主流 GPU 上的硬件加速渲染。

我期望相同的应用程序(没有任何修改)应该在具有更好规格的不同机器上表现更好。于是我在台式机上试了一下:

Intel Xeon(R) CPU 2.27 GHz
NVIDIA GeForce GTX 960

但是显示相同的图形(相同数量和类型的元素)需要 5 秒(多 1 秒)。

我想知道怎么可能,原因是什么。

【问题讨论】:

  • 这些计算机中是否有板载(或者更确切地说是片上)GPU 可以用来代替专用适配器?
  • @melak47 我怎么知道?在设备管理器中,它们是唯一可用的显示适配器。
  • 根据您对绘图方法的实现,可能会出现不同的瓶颈,从而形成执行时间。另外,您确定您的应用程序不使用笔记本电脑上的内部显卡(英特尔高清显卡),而不是 Quadro?
  • @AntonAngelov 同样,我怎么知道我的应用程序使用的是内部视频卡而不是 Quadro?
  • i7 720 实际上可能比 Xeon 快一点,具体取决于它是哪个 Xeon。 720 具有相对较高的 2.8 GHz 涡轮增压。那个 Xeon 如果它有 turbo 提升,可能不会超过 2.6 GHz。

标签: c++ performance directx direct2d


【解决方案1】:

没有测量就无法确定。然而,我的直觉告诉我 melak47 是正确的。不缺乏 GPU 加速,它缺乏带宽。集成 GPU 可以访问与 CPU 相同的内存。他们可以跳过必须通过总线将位图和绘图命令传输到 GPU 专用图形内存的步骤。

对于主要是 2D 的工作负载,任何 GPU 都将大部分时间花在等待内存上。在您的情况下,集成 GPU 具有优势。我怀疑你感觉到的额外时间是你的 GeForce 等待通过主板总线的图形。

但是,您可以profile 并启发我们。

【讨论】:

    【解决方案2】:

    cmets 和其他回复中的一些优点。(还不能添加评论)
    您的结果并不让我感到惊讶,因为您的 2 个设置之间存在一些差异。

    让我们看看那里:http://ark.intel.com/fr/compare/47640,43122

    很遗憾,我们看不到您的 Xeon CPU 支持的 SSE 版本。这些通常用于代码优化。我选择的用于比较的模型是否是好的模型?
    该 Core-I7 中没有集成 GPU,但 4 核 + 超线程 = 8 线程,针对 2 核,Xeon 没有超线程。
    Quadro 在实时渲染方面表现出色。由于您的场景似乎很简单,因此可以对其进行很好的优化,但只是“也许”-我在这里猜...有经验的人可以对此发表评论吗? :-)

    所以事情没那么简单。看起来更好的 gfx 卡并不意味着更好的性能。如果你在其他地方遇到瓶颈,那你就完蛋了!

    差异很小,您必须比较 2 个设置的每个元素:CPU、RAM、HDD、GPU、主板与 PCI-e 类型和芯片组。

    再说一遍,很多猜测,需要一些测试:)

    玩得开心,祝你好运;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2010-09-12
      相关资源
      最近更新 更多