Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:wait()将fps限制为64_Java_Limit_Wait_Synchronized_Frame Rate - Fatal编程技术网

Java:wait()将fps限制为64

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

我在主loop2D游戏窗口中的代码中有以下内容:

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。让我困惑的是,浏览器让它运行得更快。