[問題] abs 與 pow 的底層運作 ???

看板C_and_CPP (C/C++)作者 (呦厚厚)時間16年前 (2009/09/15 10:29), 編輯推噓4(4010)
留言14則, 4人參與, 最新討論串1/1
我在寫的程式中 常常需要把兩個座標點拿出來比距離 當然我不可能用平方開根號的方式比 因為開根號太耗費效能了 而且我只是要比大小而已 所以只需要可以參考的數值就夠了 想請問 取絕對值 abs(x1-x2)+abs(y1-y2) 或是平方 pow((x1-x2),2)+pow((y1-y2),2) 這兩種方式在 c++的底層裡 哪一個比較耗效能 哪一個比較快 謝謝了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.65.74

09/15 10:37, , 1F
浮點數?? 平方可以直接用 tx=x1-x2, tx*tx 來取代@_@"
09/15 10:37, 1F

09/15 10:38, , 2F
平方的話請用 (x1-x2)*(x1-x2); 用 pow 太慢
09/15 10:38, 2F

09/15 10:38, , 3F
另外這兩個比出來的結果差滿多的喔
09/15 10:38, 3F

09/15 10:39, , 4F
浮點數abs可以用把MSB強制AND成0做到; 誰比較快嘛...@@"
09/15 10:39, 4F

09/15 11:53, , 5F
兩個加起來會是錯的... 而且錯不小, 建議還是平方
09/15 11:53, 5F

09/15 13:47, , 6F
兩個座標的數都是浮點數沒錯
09/15 13:47, 6F

09/15 13:47, , 7F
樓上的 L大 請問差很多 到底是哪一個快阿 ???
09/15 13:47, 7F

09/15 13:48, , 8F
樓上的 E大 你說會錯是用 abs()嗎 為什麼會錯很大??
09/15 13:48, 8F

09/15 13:51, , 9F
我說的差很多是比大小會錯很大 XD
09/15 13:51, 9F

09/15 13:51, , 10F
時間的話很難說
09/15 13:51, 10F

09/15 13:52, , 11F
用 abs 的話, (0,0) 到 (1,1) > (0, 0) 到 (1.5, 0)
09/15 13:52, 11F

09/15 13:53, , 12F
用根號的話, (0,0) 到 (1,1) < (0, 0) 到 (1.5, 0)
09/15 13:53, 12F

09/15 13:54, , 13F
說錯, 是用平方法, 不是根號
09/15 13:54, 13F

09/15 14:04, , 14F
喔喔 我懂了 謝謝
09/15 14:04, 14F
文章代碼(AID): #1AhlmIjE (C_and_CPP)
文章代碼(AID): #1AhlmIjE (C_and_CPP)