红宝石睡觉还是延迟不到一秒钟?


149

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

Answers:


202
sleep(1.0/24.0)

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

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

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

14
@Funkodebat我很确定每个基本的ruby运行时都会为您做到这一点。
GeorgSchölly2012年

2
@JosephSilvashy:我对ruby解释器没有任何了解,但是ruby mri默认情况下不做备忘录。但我希望它在将源代码转换为字节码的同时进行这种优化。
乔治·Schölly

8
出于DRY原理,将1.0 / 24.0值提取为变量是一个好主意。其他代码段也需要该值,因此您应将其保存在中央位置,以避免重复。如果性能有副作用,那就太好了!
James Watkins 2014年

1
您绝对应该提取常数,并且绝对不要这样做,因为“您可以获得的所有性能”
Blake

4
但这是一种快速划分,每帧运行一次。希望框架本身的渲染在计算复杂度上提高许多数量级。这是过早优化的一个很好的例子。
艾伦H.15年

101

通过浮床睡觉,就像 sleep 0.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.