Java:wait()将fps限制为64
我在主loop2D游戏窗口中的代码中有以下内容:Java:wait()将fps限制为64,java,limit,wait,synchronized,frame-rate,Java,Limit,Wait,Synchronized,Frame Rate,我在主loop2D游戏窗口中的代码中有以下内容: try{ synchronized(this){ wait(3); } } catch(Exception ex) { System.out.println(ex); } 这段代码导致FPS上限为64,我不知道为什么。我不使用任何其他同步块。有趣的是,当web浏览器打开时,fps不再被封顶。有谁能告诉我如何摆脱64 fps的限制吗?我没有找到任何与此问题相关的其他主题 编辑: 没有等待3;-每分钟180帧。 wait3和b
try{
synchronized(this){
wait(3);
}
}
catch(Exception ex) {
System.out.println(ex);
}
这段代码导致FPS上限为64,我不知道为什么。我不使用任何其他同步块。有趣的是,当web浏览器打开时,fps不再被封顶。有谁能告诉我如何摆脱64 fps的限制吗?我没有找到任何与此问题相关的其他主题
编辑:
没有等待3;-每分钟180帧。
wait3和browserOpera的速度为113 fps。
有wait3和没有浏览器-64 fps。
浏览器如何改变fps?不要尝试获得超过60 fps的速度。现代显示器的显示速度不会超过60帧/秒 不要尝试获得超过60 fps的速度。现代显示器的显示速度不会超过60帧/秒 尽管等待和睡眠参数的分辨率是以毫秒为单位的,但几乎可以肯定的是,您永远无法准确获得您请求的延迟
在Windows系统上,分辨率约为15ms,即1000/15=66fps尽管等待和睡眠参数的分辨率以毫秒为单位,但您几乎肯定永远不会得到您所请求的准确延迟
在Windows系统上,分辨率约为15ms,即1000/15=66fps如果不使用任何其他同步块,则没有人通知线程。这意味着在每次迭代中,你可能会告诉你的应用程序至少睡眠3毫秒。此外,由于线程在进入睡眠状态时放弃其时间量,并且时钟分辨率通常也超过1毫秒,这取决于操作系统,因此您可能会损失更多的时间 64 FPS意味着一帧所需的时间略高于15 ms。请告诉我们您的无上限FPS是多少,计算每帧转换的毫秒数,并查看差异。如果在没有丢失代码的情况下,帧时间的差值在3-10ms左右,则10ms可能是sane系统上时钟粒度的合理上限,这可能只是等待的结果。如果没有等待,你的帧只需要1毫秒,可能会有一些额外的效果 在Jan的评论后编辑:115 FPS意味着每帧8.7毫秒。因为wait3,从这个数字到15似乎是可能的。我不确定在后台运行另一个应用程序会如何影响它。在后台执行另一个任务可能会影响调度程序的行为。另一个任务是否将FPS恢复到115或某个中间值
在Jan的第二条评论后编辑:如果是180而不是115,我们每帧有5.5毫秒。这增加了差异,但由于Windows时钟像其他人指出的那样相当粗糙,这仍然在上述效果的范围内。如果不使用任何其他同步块,则没有人通知线程。这意味着在每次迭代中,你可能会告诉你的应用程序至少睡眠3毫秒。此外,由于线程在进入睡眠状态时放弃其时间量,并且时钟分辨率通常也超过1毫秒,这取决于操作系统,因此您可能会损失更多的时间 64 FPS意味着一帧所需的时间略高于15 ms。请告诉我们您的无上限FPS是多少,计算每帧转换的毫秒数,并查看差异。如果在没有丢失代码的情况下,帧时间的差值在3-10ms左右,则10ms可能是sane系统上时钟粒度的合理上限,这可能只是等待的结果。如果没有等待,你的帧只需要1毫秒,可能会有一些额外的效果 在Jan的评论后编辑:115 FPS意味着每帧8.7毫秒。因为wait3,从这个数字到15似乎是可能的。我不确定在后台运行另一个应用程序会如何影响它。在后台执行另一个任务可能会影响调度程序的行为。另一个任务是否将FPS恢复到115或某个中间值
在Jan的第二条评论后编辑:如果是180而不是115,我们每帧有5.5毫秒。这增加了差异,但正如其他人指出的那样,Windows时钟相当粗糙,这仍然在上述效果的限制范围内。谁在执行匹配通知调用?未设置上限时,您获得的FPS是多少?未设置上限时,FPS约为115,并且没有指定的通知调用。谁在执行匹配通知调用?未设置上限时,您获得的FPS是多少?未设置上限时,FPS约为115,并且没有指定的通知调用。问题是fps可能会下降到60以下,但实际上fps更稳定,并且不会下降到上限时的程度。我仍然很好奇是什么导致了这个极限?诀窍是不要降到60帧以下。但是没有必要计算更多的帧。问题是fps可能会下降到60以下,但实际上fps更稳定,并且不会下降到上限时的程度。我仍然很好奇是什么导致了这个极限?诀窍是不要降到60帧以下。但我在那里
it’没有必要计算更多的帧。那么,在后台Opera中运行web浏览器如何绕过它呢?@JanBurak-您的wait3通常至少要等待15毫秒。我不知道为什么歌剧有帮助。也许它提高了滴答声的分辨率。我相信Oracle数据库可以。哦,我明白了。我测量了等待前后的时间。浏览器打开时,不同之处在于:有时0完全不等待,有时15-16秒。谢谢你指出它实际上需要15毫秒,而不是3毫秒,因为我认为我只是一个初学者,所以几乎所有的信息对我都很重要。如果没有浏览器,差异总是15或16,因此浏览器必须以某种方式干扰等待。那么,在后台Opera中运行web浏览器如何绕过它?@JanBurak-您的等待3通常至少等待15毫秒。我不知道为什么歌剧有帮助。也许它提高了滴答声的分辨率。我相信Oracle数据库可以。哦,我明白了。我测量了等待前后的时间。浏览器打开时,不同之处在于:有时0完全不等待,有时15-16秒。谢谢你指出它实际上需要15毫秒,而不是3毫秒,因为我认为我只是一个初学者,所以几乎所有的信息对我都很重要。如果没有浏览器,差异总是15或16,因此浏览器必须以某种方式干扰等待。如果没有wait3;-每分钟180帧。在wait3和浏览器打开的情况下-113 fps。有wait3和没有浏览器-64 fps。让我困惑的是,浏览器让它运行得更快。没有wait3;-每分钟180帧。在wait3和浏览器打开的情况下-113 fps。有wait3和没有浏览器-64 fps。让我困惑的是,浏览器让它运行得更快。