代码之家  ›  专栏  ›  技术社区  ›  Brandon Wang

如果计算机运行缓慢,请跳过一些代码

  •  12
  • Brandon Wang  · 技术社区  · 15 年前

    有没有办法检测计算机是否运行缓慢且没有运行某些代码(关闭jQuery动画,或者只运行一个函数,如果需要的话)

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

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

    6 回复  |  直到 15 年前
        1
  •  11
  •   driis    15 年前

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

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

        2
  •  8
  •   hugoware    15 年前

    最简单的解决方案是让用户自己选择一个复选框,但另一方面,您可以尝试为计算机的第一个动画计时,如果超过某个时间限制,则关闭其余动画。。。例如

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

    然后,例如,如果动画需要1.5秒,且时间差为5秒,则关闭所有剩余动画。

        3
  •  5
  •   Josh    15 年前

    我认为有两种选择:

    1. 尝试检测慢速机器-您可以尝试使用超时脚本检测慢速机器-如果动画/加载未在特定时间内完成,请切换到更简单的站点版本。这种方法的缺点是,您不知道脚本为什么超时——可能是因为连接不好,或者用户在加载其他东西的同时暂时减慢了机器的速度。

    希望这能给你一些想法。

    乔希

        4
  •  1
  •   Tyler    15 年前

    我想指出,如果你想让用户决定(我认为这是一个好主意),你应该清楚地表明,你问的是计算机速度,而不是连接速度或带宽。用户可能有一台速度非常快的笔记本电脑,但使用的是慢速公共wi-fi连接,反之亦然。因为Javascript是客户端的,所以重要的只是计算机速度。

        5
  •  0
  •   Noldorin    15 年前

    考虑到JavaScript在部分信任环境中运行,我认为您将无法获得任何操作系统级别的信息。

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

        6
  •  0
  •   ChrisW    15 年前

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

    • 开始执行此代码
    • 在部分执行之后,看看实时性降低了多少