2012-08-05 35 views
2

重複使用if語句還是使用它們一次並使用委託根據IF語句的輸出調用函數會更好嗎?我想說的是,答案顯然是委託人,但我不確定是否反覆使用不同的方法比執行相同事情的許多IF語句更快或更慢。我希望我解釋正確。許多IF語句與代表?

PS我需要知道的這個框架是XNA,如果它很重要的話。

+1

這個問題的答案取決於更多的信息比你真的可以給我們在這裏。您應該同時寫入,分析兩者,並比較結果。這會給你一個更確切的答案。 – 2012-08-05 21:22:41

+1

這裏有很多不清楚的東西;您的代表是否正在使用閉包或者他們是否只在分配的早期分配?是否有可能改用虛擬方法?你是否想過與代表一起使用字典? – Lucero 2012-08-05 21:22:43

+0

這聽起來像一個你描述的狀態機,是一個嗎? – Dykam 2012-08-05 21:24:30

回答

1

你有你的權衡。最好的答案已經被評論過了,那就是分析兩者,然後弄清楚。 IF語句可能需要更多的CPU,因爲它必須一次又一次地進行比較。另一方面,使用委託需要更多的內存,這是你需要保持的另一個對象。

個人而言,我最喜歡做的事情(如果適用,不知道問題的完整背景)正在將您的IF ELSE語句轉換爲開關案例。這對於狀態機和其他重複性流程非常有效,並且可以消除IF帶來的所有分支。但是,這是假設你正在檢查的值在範圍內都是相對接近的,否則你會給編譯器造成很大的痛苦。

+0

好的,謝謝你的建議,+1在內存和性能之間取捨,忘記了內存...... – Oztaco 2012-08-05 22:25:07

1

這是一個有用的技術,當然。顯然,只有少數代表如果代表沒有意義,因爲代價昂貴,並且CPU無法輕鬆預測分支目標。對於非常多的if是一次性初始化委託是有意義的。

目前還不清楚盈虧平衡點在哪裏。那個需要被測量。

+0

+1注意它需要測量,但是leaf68想綁定一次委託,所以我想如果有任何分支預測只是「如果」陣營的減緩因素。 – 2012-08-05 21:41:26

+0

我想說,如果*可以*預測和委託沒有。 – usr 2012-08-05 21:44:56