作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码在循环中运行,该循环每帧执行10万次(这是游戏):
If (_vertices(vertexIndex).X > _currentPosition.X - 100) And (_vertices(vertexIndex).X < _currentPosition.X + 100) And (_vertices(vertexIndex).X Mod 4) And (_vertices(vertexIndex).Z Mod 4) Then
_grassPatches(i Mod 9).Render(_vertices(vertexIndex))
End If
Render
行,则游戏将以大约100 FPS的速度运行,但是,如果我注释掉整个
If
循环,则帧速率将增加到大约400 FPS。我不明白为什么
If ... And ... And ... And ... Then
循环会大大降低我的游戏速度。是因为有多个
And
吗?
Dim i As Integer = 0
Dim vertex As Vector3
Dim curPosX As Integer
For vertexIndex As Integer = _startIndex To _endIndex
vertex = _vertices(vertexIndex)
curPosX = _currentPosition.X
If (vertex.X > curPosX - 100) And (vertex.X < curPosX + 100) And (vertex.X Mod 4) And (vertex.Z Mod 4) Then
_grassPatches(i Mod 9).Render(_vertices(vertexIndex))
End If
i += 1
Next
And
替换所有
AndAlso
。这并没有带来任何性能优势。
最佳答案
您的问题可能来自使用Mod
运算符。如果您可以避免使用它,或者找到另一种获得结果的方法,则可以使循环更快。
干杯
关于vb.net - 循环中If语句的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923599/
我是一名优秀的程序员,十分优秀!