36

这是一个远景 - 无论如何可以通过 JS 插件来检测较差的和强大的显卡性能?

我们为客户建立了一个视差站点,它在性能较低的机器上卡顿 - 我们可以调整性能以使其更好地全面工作 - 但这当然会降低使用高性能机器的用户的体验。

我们也可以检测浏览器版本——但相同的浏览器可以在低性能和高性能机器上运行——所以对我们的情况没有帮助

有任何想法吗?

4

7 回答 7

29

requestAnimationFrame (rAF) 可以帮助解决这个问题。

您可以使用 rAF 计算帧速率。此处的详细信息:使用 requestAnimationFrame 在 Canvas 中计算 FPS。简而言之,您计算出帧之间的时间差,然后除以 1(例如 1/.0159s ~= 62fps )。

注意:使用您选择的任何方法,性能将任意决定。也许每秒超过 24 帧的任何东西都可以被认为是“高性能”。

于 2013-03-22T20:20:35.997 回答
17

为什么不让用户决定呢?Youtube(和许多其他视频共享网站)实现了播放质量选择器,现在是一个齿轮图标,其中包含您可以选择的分辨率列表。会这样吗HDSDHi-Fi| Lo-Fi选择器在您的应用程序上下文中工作(甚至有意义)?

于 2013-03-13T20:49:18.687 回答
3

这就是“老派”加载屏幕派上用场的地方,您可以在前景(或隐藏)中渲染一些复杂的东西,不管它看起来奇怪还是古怪——当你加载资源时,你可以决定启用或禁用哪些效果。

基本上你会使用 jcage 为此提到的,测试帧率(即结合使用 asetInterval和计时器)。然而,这并不总是 100% 可靠,因为如果他们的机器在这种情况下决定进行三螺旋向后翻筋斗(或更可能的事情),你会得到一个狡猾的读数。根据所涉及的动画,可以实时升级和降级效果 - 但这总是更难以编码,加上您自己对情况的分析有时会导致性能下降。

于 2013-03-13T18:04:10.213 回答
1

Firefox 有一个内置的不支持的显卡列表:https ://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers相关帮助文章

但是您只能在访问 WebGL 功能时间接测试它们......

当出现问题时,http: //get.webgl.org/troubleshooting/会引导您找到相应的浏览器提供商。检查 JS 代码时,您会看到它们通过

if (window.WebGLRenderingContext) {
    alert('Your browser does not support WebGL');
}

如果您有最新的图形卡。

于 2013-03-13T16:34:59.077 回答
1

您可能会考虑检查浏览器是否支持window.requestAnimationFrame,这表明您正在运行较新的浏览器。或者考虑检查jQuery.fx.interval

然后,您可以实现一个自定义函数来衡量可用的处理能力。您可以尝试使用自定义缓动函数,然后可以通过.slideDown()之类的函数运行该函数,以了解可用的计算能力。

有关如何检查 javascript 性能的更多想法,请参阅另一个问题的答案。

于 2013-03-13T17:52:31.247 回答
1

如果浏览器是超现代的并且支持 requestAnimationFrame,您可以实时计算动画帧速率,并为较慢的机器放弃您的动画设置。那是 IE 10、Firefox 4、Chrome 10 和 Safari 6。

您实际上将创建一个在 requestAnimationFrame() 回调上运行的“tick”函数,并跟踪每个滴答之间经过的毫秒数。在记录了这么多滴答声后,您可以对其进行平均以确定您的整体帧速率。但这有两个警告:

  1. When the tab is in the background requestAnimationFrame callbacks will be suspended -- so a single, sudden delay between frames of several seconds to many minutes does not mean it's a slow animation. 和:

  2. 简单地在每个动画帧上运行一个 JavaScript 仪表会导致整个动画变慢一点;没有办法在不对它产生负面影响的情况下测量类似的东西。记住,海森堡是个混蛋。

对于较旧的浏览器,我不知道有什么方法可以可靠地测量帧速率。您可能可以使用 setTimeout() 对其进行模拟,但它不会那么准确 - 并且可能对性能产生更大的负面影响。

于 2013-03-19T05:31:24.060 回答
1

这可能是基于风险/收益的决策。我认为你必须在这里做出重要但艰难的决定。

1) 如果您决定拥有两个版本,您将不得不花一些时间:

  • 找出快速、非侵入性的测试
  • 花时间实施
  • 将其投入生产

你很可能会以不正确的实现告终,例如我的电脑正在运行 70 个 chrome 标签、带有 1080p 动画的 VLC 和 IntellijIDEA

我的 MBP,2012 型号被检测为“慢”计算机的可能性很高,至少现在是这样。

误报真的很难弄清楚。

2)如果您选择一个版本,您将不得不在 HD 和 Lo-Fi 之间进行选择,正如@Patrick 所提到的,我认为这又是一个错误。

我建议你去谷歌分析,找出浏览器分布(是的,我知道它可能会误导,但任何其他测试也可以)并基于此(如果大多数用户是 Chrome + 现代 IE/FF选择高清版,但要花一些时间弄清楚优化策略。

总有一些事情可以做得更好更快。购买一台较旧的笔记本电脑,并进行优化,直到获得不错的 FPS 速率。就是这样,作为开发人员,你需要做出决定,这是你的职责。

3) 如果从浏览器发行版中您发现您绝对必须使用 Lo-Fi 版本,那么请尝试认为“降级”是否值得,并且只有在您不得已时才实施它。

于 2013-03-24T20:19:08.833 回答