使用javascript检测设备CPU/GPU性能?

使用javascript检测设备CPU/GPU性能?,javascript,performance,html,cpu,three.js,Javascript,Performance,Html,Cpu,Three.js,(这个问题并不是针对three.js的,但我将以它为例) 我最近一直在使用three.js开发web应用程序界面,并在WebGL和画布渲染器(用于桌面浏览器)之间编写了一些不错的回退 但现在的问题是如何正确检测设备能力,问题有两个方面: 浏览器功能(静态功能,如webgl/canvas):这主要是通过使用简单的功能检测在web社区内解决的 设备功能:这是最难的部分,如果无法直接访问设备的硬件信息,我们需要一些方法来判断是否应该退回到硬件要求较低的代码 一个显著的例子:Firefox mobile

(这个问题并不是针对three.js的,但我将以它为例)

我最近一直在使用three.js开发web应用程序界面,并在WebGL和画布渲染器(用于桌面浏览器)之间编写了一些不错的回退

但现在的问题是如何正确检测设备能力,问题有两个方面:

  • 浏览器功能(静态功能,如webgl/canvas):这主要是通过使用简单的功能检测在web社区内解决的
  • 设备功能:这是最难的部分,如果无法直接访问设备的硬件信息,我们需要一些方法来判断是否应该退回到硬件要求较低的代码
  • 一个显著的例子:Firefox mobile/Opera mobile声称支持WebGL,但存在缺陷或受到设备硬件的限制

    到目前为止,我提出了一些解决办法:

  • 使用一个通用功能作为性能指标-例如,触摸设备通常硬件功能较弱。缺点:这不是未来的证明
  • 黑名单已知有缺陷的浏览器/设备-UA嗅探将不可避免,并且很难维护
  • 性能测试-因此,除了运行代码和测量帧率,还有更好的选择吗

  • 或者可能不必这么难,还有其他建议吗?

    您可以用于WebGL硬件支持和功能检测。

    我在一个项目中使用了性能测量方法,我们希望利用高规格CPU/GPU桌面上可用的画布功能,以及低速设备,如桌子和电话

    基本上,我们从最低场景复杂度开始,如果renderloop花费的时间少于33毫秒,我们会增加复杂度(如果renderloop在以后开始花费的时间太长,我们也会降低复杂度)


    我想在您的情况下,您可能需要运行一个快速的canvas和webgl性能测试,然后选择一个。花了一段时间研究这一点,我没有遇到一些棘手的、不明显的技术可以更好地解决这个问题。

    如果您使用three.js,您可以使用detector.js来确定是否启用了webgl。此外,远离拉票也会有所帮助。使用WebGLRender或softwarerender。因为它们允许更多的顶点。softwarerender相当新,需要一些工作,但可以使用。

    虽然统计数据很有趣,但我不知道如何将其应用于我网站的个人用户(以便在没有设备/浏览器黑名单的情况下实现适当的回退)。此外,从代码来看,检测似乎是在iframe中完成的,我保留对方法选择的怀疑。这是非常有趣的信息,但它只是功能检测,您可以自己为每个用户做一些事情。它不会告诉你性能,除非你想在功能实现和性能之间画出一些非常狡猾的关联。现在不会了。网站死了。喜欢你登陆的解决方案。感谢分享。+1,动态检测和调整是唯一的出路。特别是如果您想支持任何使用电池的设备,并且可能会在飞行中切换到低性能模式以节省电池的话。如果只执行一次静态检测,就会错过环境中的此类更改。