【问题标题】:Ruby sleep or delay less than a second?Ruby sleep 还是延迟不到一秒?
【发布时间】:2011-02-02 08:04:41
【问题描述】:

我正在使用 ruby​​ 制作一个脚本,该脚本必须以每秒 24 帧的速度渲染帧,但我需要在发送命令之间等待 1/24 秒。睡不到一秒钟的最佳方法是什么?

【问题讨论】:

    标签: ruby


    【解决方案1】:
    sleep(1.0/24.0)
    

    至于您的后续问题,这是否是最佳方式:不,您可能会获得不太流畅的帧速率,因为每帧的渲染时间可能不会相同。

    您可以尝试以下解决方案之一:

    • 使用带有绘图代码的每秒触发 24 次的计时器。
    • 创建尽可能多的帧,根据经过的时间创建运动,而不是每帧。

    【讨论】:

    • @Funkodebat 我很确定每个基本的 ruby​​ 运行时都会为您执行此操作。
    • @JosephSilvashy:我对 ruby​​ 解释器没有任何了解,但 ruby​​ mri 默认不做记忆。但我希望它在将源代码转换为字节码的同时做这种优化。
    • 根据 DRY 原则,将 1.0/24.0 值提取到变量中是个好主意。其他代码段也需要该值,因此您应该将其保存在中心位置以避免重复。如果性能是一个副作用,那就太好了!
    • 你绝对应该提取常量,绝对不要以“你能得到的所有性能”为理由这样做
    • 但这是一个快速除法,每帧运行一次。希望帧本身的渲染在计算复杂度上要大很多。这是过早优化的一个很好的例子。
    【解决方案2】:

    float 传递给sleep,例如:

    sleep 0.1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2020-09-03
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多