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循環:-
適合兩個列表大小差異較大,或者處理邏輯完全獨立的情況。
-
例如:
csharp復制for (int i = 0; i < AniopenlistL.Count; i++) { // 處理 AniopenlistL[i] } for (int i = 0; i < AniopenlistR.Count; i++) { // 處理 AniopenlistR[i] }
-
-
一個合并的
for循環:-
適合兩個列表大小相近,且處理邏輯可以并行執行的情況。
-
例如:
csharp復制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號