Ruby sleep or delay less than a second?
我正在用ruby编写脚本,该脚本必须以每秒24帧的速度渲染帧,但是我需要在发送命令之间等待1/24秒。 不到一秒钟的最佳睡眠方式是什么?
-
我认为通常最好不要用答案来更新问题? 它会阻止用户阅读实际答案吗?
-
是的,删除了我的更新。
关于您的后续问题,这是否是最好的方法:不,您可能会获得不太流畅的帧速率,因为每个帧的渲染可能不会花费相同的时间。
您可以尝试以下解决方案之一:
-
使用一个计时器,该计时器每秒以绘图代码触发24次。
-
创建尽可能多的帧,根据经过的时间而不是每帧创建运动。
-
@Funkodebat我非常确定每个基本的ruby运行时都会为您执行此操作。
-
Ruby会记住吗?
-
@JosephSilvashy:我对ruby解释器没有任何了解,但是ruby mri默认情况下不做备忘录。但我希望它在将源代码转换为字节码的同时进行这种优化。
-
将1.0 / 24.0值提取为DRY原理的变量是一个好主意。其他代码段也将需要该值,因此您应将其放在中央位置,以避免重复。如果性能有副作用,那就太好了!
-
您绝对应该提取常数,并且绝对不要这样做,原因是"您可以获得的所有性能"
-
关于性能,我对此感到很好奇,并编写了2个快速功能。一个将1.0 / 24.0加到变量1000万次,另一个使用等于1.0 / 24.0的CONST加1000万次。然后我分别运行这些函数100次并取平均值。运行该脚本4或5次。结果:在每次试验中,使用常数vs重新计算可将速度一致地提高20%。
-
但是它的快速划分是每帧运行一次。希望框架本身的渲染在计算复杂度上提高许多数量级。这是过早优化的一个很好的例子。
使float进入睡眠状态,例如sleep 0.1