2009-11-23 191 views
1

鯊魚告訴我,這是糟糕的表現的一個熱點:我該如何改進這段代碼?

double distanceA = fabsf(target - current); 

目標是CGFloat的 電流CGFloat的

我的計算其餘依靠雙。無論如何,也許有一些更聰明的方法來做到這一點?

回答

0

不Xcode中附近的權利,但嘗試:

double distanceA = (double) fabsf(target - current); 
+0

我認爲這有助於提高性能。謝謝。 – 2009-11-23 01:56:04

+1

我會認爲這只是明確隱含已經發生的事情(從float到double的投射)?這會如何改善? (不是sn,,我不知道有關可可的事情) – Mikeb 2009-11-23 13:40:23

+0

哈哈,我真的不知道。 IIRC,Xcode不喜歡它,當你沒有明確地投入一個值。也許這在鯊魚身上掀起了一面旗幟。這真的是我能想到的唯一(僞)錯。 – 2009-11-23 17:23:58

6

除非你有必要在你的距離雙精度,改變距離爲float。 CGFloat被定義爲iPhone上的浮點數,fabsf()採用浮點值並返回浮點值。在處理雙精度值時,iPhone可能會比標準浮點數慢得多。

事實上,對於距離變量使用雙精度沒有意義,因爲通過fabsf()運行計算已經失去了精度,fabsf()只返回一個浮點數。