同样的Direct2D应用在“较慢”的机器上表现更佳

4

我写了一款使用Direct2D技术的应用程序,用于显示一定数量的图形。

当我在笔记本电脑上运行此应用程序时,需要大约4秒钟才能显示70万个图形元素:

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

根据Direct2D MSDN页面的介绍:

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

我原本期望相同的应用程序(没有任何修改)在配置更好的不同计算机上表现更好。所以我在台式电脑上尝试了一下:
Intel Xeon(R) CPU 2.27 GHz
NVIDIA GeForce GTX 960

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

我想知道可能的原因以及如何解决这个问题。


这两台计算机中是否有内置(或者说是集成在芯片上)的GPU,可以代替独立显卡使用? - melak47
@melak47 我怎么知道呢?在设备管理器中,它们是唯一可用的显示适配器。 - Nick
根据你绘图方法的实现方式,可能会出现不同的瓶颈,从而影响执行时间。你确定你的应用程序没有使用笔记本电脑上的内置显卡(Intel HD Graphics)而是使用 Quadro 显卡吗? - Anton Angelov
@melak47,Xeon 没有这个功能,但所有的 i7 都有。 - user3235832
1
i7 720 可能比那个 Xeon 更快一点,这取决于该 Xeon 的型号。720 具有相对较高的 Turbo Boost,达到了 2.8 GHz。如果那个 Xeon 有 Turbo Boost,可能也不会超过 2.6 GHz。 - Eelke
显示剩余5条评论
2个回答

2
没有测量是无法确定的。然而,我的直觉告诉我melak47是正确的。不是缺乏GPU加速,而是缺乏带宽。集成GPU可以访问与CPU相同的内存。它们可以跳过将位图和绘图命令传输到专用图形内存的步骤。
对于主要是2D工作负载,任何GPU都会花费大部分时间等待内存。在你的情况下,集成GPU具有优势。我怀疑你感觉到的额外一秒钟是你的GeForce在等待通过主板总线传输的图形。
但是,你可以链接到profile并启发我们。

0

评论区和其他回复中有一些好的观点。(我还不能发表评论)
你的结果并不让我感到惊讶,因为你的两个设置之间存在一些差异。

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

遗憾的是,我们无法看到你的Xeon CPU支持的SSE版本。这些通常用于代码优化。我选择的模型是否是正确的比较对象?
那个Core-I7没有集成GPU,但是4个核心+超线程=8个线程,而Xeon没有超线程只有2个核心。
当涉及实时渲染时,Quadro的东西非常出色。由于你的场景似乎相当简单,它可能会被很好地优化,但只是“可能”-我在这里猜测...有经验的人能否对此发表评论?:-)

所以这并不简单。一个更好的显卡并不意味着一定有更好的性能。如果你在其他地方有瓶颈,那就完了!

差别很小,你必须比较你的两个设置的每个单独元素:CPU、RAM、HDD、GPU、带PCI-e和芯片组的主板。

所以再次强调,需要进行很多猜测和一些测试 :)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接