unity C#的一些注意事项
1,2025-02-08
集合在声明的时候不能连在一起声明,例如
poslist = rotlist = new List<float>();
因为集合本质是链表,这样写会导致Add数据的时候poslist和rotlist链在一起,导致数据融合
应该写成
poslist = new List<float>(); rotlist = new List<float>();
2,2025-02-25
/***********************************************************************************************************************************/
在性能上,两个单独的 for 循环 和 一个合并的 for 循环 的效率取决于具体的使用场景和数据规模。以下是详细的分析:
1. 两个单独的 for 循环
for (int i = 0; i < AniopenlistL.Count; i++)
{
// 处理 AniopenlistL[i]
}
for (int i = 0; i < AniopenlistR.Count; i++)
{
// 处理 AniopenlistR[i]
}
优点
-
代码清晰:
-
每个循环只处理一个列表,逻辑简单明了。
-
-
缓存友好:
-
连续访问一个列表的元素,可能更好地利用 CPU 缓存。
-
缺点
-
额外的循环开销:
-
需要初始化两个循环变量,执行两次循环条件判断。
-
2. 一个合并的 for 循环
for (int i = 0; i < Mathf.Max(AniopenlistR.Count, AniopenlistL.Count); i++)
{
if (i < AniopenlistR.Count)
{
// 处理 AniopenlistR[i]
}
if (i < AniopenlistL.Count)
{
// 处理 AniopenlistL[i]
}
}
优点
-
减少循环次数:
-
只需要一个循环变量和一次循环条件判断。
-
-
适合并行处理:
-
如果两个列表的处理逻辑可以并行执行,合并循环可能更高效。
-
缺点
-
额外的条件判断:
-
每次循环需要检查
i < AniopenlistR.Count和i < AniopenlistL.Count。
-
-
缓存不友好:
-
交替访问两个列表的元素,可能导致 CPU 缓存效率降低。
-
性能对比
| 方法 | 循环次数 | 条件判断次数 | 缓存友好性 | 适用场景 |
|---|---|---|---|---|
两个单独的 for 循环 |
2 次 | 2 次 | 高 | 列表大小差异较大,逻辑独立 |
一个合并的 for 循环 |
1 次 | 2 * n 次 | 低 | 列表大小相近,逻辑可以并行 |
-
循环次数:
-
两个单独的
for循环需要执行两次循环。 -
一个合并的
for循环只需要执行一次循环。
-
-
条件判断次数:
-
两个单独的
for循环需要执行两次条件判断(每次循环一次)。 -
一个合并的
for循环需要执行2 * n次条件判断(每次循环两次)。
-
-
缓存友好性:
-
两个单独的
for循环连续访问一个列表的元素,缓存命中率更高。 -
一个合并的
for循环交替访问两个列表的元素,缓存命中率较低。
-
适用场景
-
两个单独的
for循环:-
适合两个列表大小差异较大,或者处理逻辑完全独立的情况。
-
例如:
for (int i = 0; i < AniopenlistL.Count; i++) { // 处理 AniopenlistL[i] } for (int i = 0; i < AniopenlistR.Count; i++) { // 处理 AniopenlistR[i] }
-
-
一个合并的
for循环:-
适合两个列表大小相近,且处理逻辑可以并行执行的情况。
-
例如:
for (int i = 0; i < Mathf.Max(AniopenlistR.Count, AniopenlistL.Count); i++) { if (i < AniopenlistR.Count) { // 处理 AniopenlistR[i] } if (i < AniopenlistL.Count) { // 处理 AniopenlistL[i] } }
-
总结
-
性能差异:
-
在大多数情况下,两个单独的
for循环和合并的for循环的性能差异可以忽略不计。 -
如果列表非常大,且处理逻辑简单,两个单独的
for循环可能稍快(缓存友好性更高)。
-
-
代码可读性:
-
两个单独的
for循环通常更清晰,易于维护。
-
-
选择建议:
-
如果两个列表的处理逻辑独立,优先使用两个单独的
for循环。 -
如果两个列表的处理逻辑可以并行,且列表大小相近,可以考虑合并的
for循环。
-
根据你的具体需求选择合适的方法即可!如果有其他问题,请随时告诉我!
/***********************************************************************************************************************************/

浙公网安备 33010602011771号