回答
分支時當然會有性能問題。
但是你不能在沒有分支的情況下製作一個合理的程序。
因此,使用if
,如果通過分析程序來檢測代碼中特定位置的問題,請嘗試查看是否可以減少分支數或將其排除在循環之外。但只要代碼保持清晰,不要過多關注它。
大多數時候,衆多if
的第一個影響是可讀性和可維護性。但是,不成熟的優化通常會對這些主題產生更大的影響。
這取決於你用在你的if語句,也有使用,如果以正確的方式
我會說出其中的一些
- 始終使用,如果這是最有可能對於一些業績之前,其他情況發生,使用更常見的案件在此之前使用的可能性較小
- 嘗試循環之前,如果使用, 例如的那些
,而不是這個
BOOL isCase1 = [self isCase1];
for (int i = 0 ; i < 10000 ; i ++)
{
if(isCase1)
{
//do something
}
else
{
//do some other thing
}
}
使用本
BOOL isCase1 = [self isCase1];
if(isCase1)
{
for (int i = 0 ; i < 10000 ; i ++)
{
}
}
else
{
for (int i = 0 ; i < 10000 ; i ++)
{
}
}
不要假設你將需要提高性能,你是肯定的,大部分的時間你的表現是做好事,如果你確信之前一些代碼導致性能問題,改進它(不要過早優化代碼)
這些都是一些的情況下,有更多的
UPDATE:
其他一些有用的事情可以做,緩存的布爾例如statments
檢查
for (int i = 0 ; i < 10000 ; i ++)
{
if([self isCase1]) //Do some thing
}
使用
相反
//Cache the result inside a variable
BOOL isCase = [self isCase1];
for (int i = 0 ; i < 10000 ; i ++)
{
if(isCase) //Do some thing
}
對於將東西拉出循環的示例+1(也適用於所有其他類型的東西,而不僅僅是if語句)。 – Thilo
請注意,一個體面的編譯器已經可以執行此優化,因此請先檢查,否則您只需對代碼進行混淆即可。 –
@PaulR如果你確定編譯器可以做到這一點,請張貼一些參考資料,也是我已經在上面說過不要這樣做,直到100%確定代碼有性能問題:) –
- 1. If if語句有問題
- 2. 有問題的if語句
- 3. if語句後文件沒有打開
- 4. 我的if語句有什麼問題?
- 5. 我的if語句有什麼問題?
- 6. 我的if語句有什麼問題?
- 7. 我的IF語句有問題
- 8. 我的if語句有什麼問題?
- 9. If If語句的問題
- 10. 有沒有可能在類定義中使用if語句?
- 11. 問題在if語句中if語句
- 12. 這個if語句有什麼問題?
- 13. 這個「if」語句有什麼問題?
- 14. 這個if語句有什麼問題?
- 15. 這個if語句有什麼問題?
- 16. 我有問題與Java「if語句」
- 17. 此SQL IF語句有什麼問題?
- 18. IF語句似乎有問題
- 19. 這個if語句有什麼問題
- 20. KnockoutJS if語句有效性
- 21. if語句沒有命中
- 22. if語句問題
- 23. 「if」語句問題
- 24. 有問題的If語句,未使用的變量錯誤
- 25. 使用if語句的循環問題
- 26. 使用if,then語句的問題
- 27. PHP MySQL的問題(if語句可是沒有效果)
- 28. 使用Reflection沒有性能問題
- 29. if語句的性能
- 30. 如果語句沒有if if
,幾乎總是,它不是分支本身就是沉重的,但評估條件。考慮它們的順序和重複性可能有幫助(關於過早優化的說明適用)。 – Thilo