【问题标题】:FillGeometry much slower on UWP compared to desktop?与桌面相比,UWP 上的 FillGeometry 慢得多?
【发布时间】:2015-11-18 17:29:00
【问题描述】:

与桌面同等版本相比,我们应用的 UWP 版本运行的帧速率(6 fps 对 24 fps)要慢得多。请注意,这两个版本都在相同硬件上进行了测试。

两个版本都是使用 SharpDX 构建的,唯一的区别是 RenderTargets 的设置方式。 Windows 应用使用HwndRenderTarget,UWP 应用使用SurfaceImageSource 画笔绘制到Rectangle

我们已将罪魁祸首(至少在 CPU 方面)缩小到FillGeometry,这在 UWP 上消耗了大量时间。

与桌面相比,FillGeometry 在上述 UWP 配置中花费更长的时间有什么原因吗?

注意:两者的渲染代码相同,因此请避免对两种实现产生同等影响的建议,例如使用GeometryRealization 而不是Geometry。我们正在寻找 UWP 和桌面渲染性能差异的原因。

如果几何以外的其他因素可能会影响性能,那么了解这些因素也会很有用,因为我们的分析工具可能并不完全精确。

【问题讨论】:

  • 我确信台式电脑的显卡比手机好得多。更好的显卡意味着更好的显卡
  • 在使用和不使用 .NET Native(在 VS 中构建 DEBUG/RELEASE)时,是否会发生此性能问题?它们具有不同的互操作和编译器堆栈,因此可能有助于跟踪这一点。
  • Ken - 两个版本都在同一台机器上运行。马特 - 两者都是调试版本。 .Net native 有问题(它永远不会完成),所以目前无法使用。

标签: performance desktop uwp direct2d sharpdx


【解决方案1】:

其中一个因素似乎是内部 Direct2D 剪辑在这些情况下的工作方式不同。

我们的场景有数百个几何图形,我们的初始代码没有剪辑到视口,而是依靠 Direct2D 进行剪辑。这导致了原始帖子中提到的帧速率差异。

添加显式剪辑后,UWP 版的帧率提高到 16fps 左右(仍低于桌面应用的帧率),而桌面版的帧率并没有受到太大影响。

所以在这一点上,假设在这两种情况下不同的剪辑例程在起作用。

这还没有完全解决,因为我们的帧速率仍然存在显着差异。但这是一个开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 2014-04-30
    • 2017-07-22
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多