如果计算机速度慢,请跳过一些代码

有没有办法检测计算机是否运行缓慢并且没有运行某些代码(通过关闭jQuery动画或者只是运行快速的函数)?

我知道这个问题可能真的很微不足道,但我注意到在一些较慢的计算机上,即使是最简单的边缘动画移动也是在看起来不太好的闪光灯中完成的。

更新:
我试图运行的代码只是一堆动画; 它们都花费相同的时间,但在较慢的浏览器上,动画会像您在观看缓冲video时看到的那样进行分段。

运行javascript时,您无需事先了解目标计算机的性能。 我唯一能想到的就是运行一个函数做一些计算并测量所花费的时间。 该function必须进行足够数量的计算,以确保运行所花费的时间代表机器的性能。

一般来说,我建议不要进行这样的性能测试,因为它会占用目标机器上的资源,这是用户通常不喜欢的。 但也许您可以测量完成第一个动画所需的时间,如果它太慢,则禁用后续动画。

最简单的解决方案是使用复选框将其留给用户,但是其他方面你可以尝试为计算机计时第一个动画,然后如果它超过一定的时间限制,剩下的动画将被关闭……例如…

var start = new Date(); //... some jQuery animation var end = new Date(); var diff = end - start; 

然后,例如,如果动画需要1.5秒,并且时差为5秒,则关闭任何剩余的动画。

我认为有两种选择:

  1. 让用户决定 – 为用户提供“低带宽/低规格”选项,单击该选项将显示更简单的站点版本。

  2. 尝试检测慢速机器 – 您可以尝试使用超时脚本检测慢速机器 – 如果动画/加载未在一定时间内完成切换到更简单的站点版本。 这种方法的缺点是你不知道为什么脚本超时 – 也许这是一个糟糕的连接或用户正在加载其他东西同时暂时放慢他们的机器。

希望这会给你一些想法。

玩笑

我想指出的是,如果你要将它留给用户(我认为这是一个好主意),你应该明确表示你在询问计算机速度,而不是连接速度或带宽。 用户可能拥有非常快的笔记本电脑,但正在进行缓慢的公共Wi-Fi连接,反之亦然。 由于Javascript是客户端的,因此只有计算机速度才是最重要的。

鉴于JavaScript在部分信任环境中运行,我认为你无法获得任何操作系统级别的信息。

你能做的最好的就是测试“响应能力”。 一种可能的方法是通过将目标帧速率与“实际”帧速率进行比较来开始播放完整动画并检测滞后。 然后,您可以简单地跳过动画(代码)的位以减少计算时间,从而相应地提高响应性/帧速率。 这实质上是有多少桌面游戏检测到滞后,从而降低了动画的复杂性。 我无法保证它在使用JavaScript的浏览器中同样有效,但值得一试。

我猜你想要关闭的代码需要花费大量的时间来运行。

我建议你:

  • 开始执行此代码
  • 在部分执行之后,查看实时已经消失了多少
  • 如果太多的实时已经消失(即如果代码执行得太慢)则取消执行而不是完成它。