毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 3:03 PM
[Java] 把整數換成浮點數來進行除法,反而會比較快,這太詭異了www
int (Plurk Paste)
其中強制轉換大約花了 248 ms
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 3:05 PM
程式碼在這
import java.util.Date; (Plurk Paste)
另外更正前一篇測試,剛剛數過數字後,才知道其實跑了一億次
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 3:07 PM
其中為了避免發生除以0的例外,我特別挑了個
不管怎麼加乘個位數都不會為0的數字
當然在進行乘除時,我也會扣除執行加法的時間
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 4:39 PM
後面也做了位元運算測試,發現位元運算還比加減運算還慢www
但如果是位移的話,一億次只要幾十毫秒就完成了
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 4:41 PM
另外一個奇怪的現象是,long 比 int 還要兩倍長,位元運算卻比較快。也許是因為 int 在做位元運算時,還需要限制範圍的緣故吧?
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 4:43 PM
或許今天的測試顯示了兩件事情:
1. javascript 編譯器建議都用 long 儲存正整數,有必要時再換成浮點數。
2. 在 Java 下質數運算用浮點數會更快更有效率 (但是你只能算出小於 4,503,599,627,370,495 的質數)
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 4:47 PM
...但也許哪天 Java 推出使用 128 位元的 IEEE 754 ,或許就能拉高整數上限
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 5:15 PM
於是剛剛還是無聊寫了個用浮點數算質數的版本,發現用浮點數做除法來測試質數,比用正整數還要快.........
我先去睡個覺
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 5:15 PM
import java.util.Date; (Plurk Paste)
毛茸茸 ・*・:≡( ε:)
@SpyMomiji
Thu, Oct 20, 2016 5:16 PM
運算 1,000,000 個
浮點數: 1957 ms
長整數: 5023 ms
載入新的回覆
int (Plurk Paste)
其中強制轉換大約花了 248 ms
import java.util.Date; (Plurk Paste)
另外更正前一篇測試,剛剛數過數字後,才知道其實跑了一億次
當然在進行乘除時,我也會扣除執行加法的時間
但如果是位移的話,一億次只要幾十毫秒就完成了
1. javascript 編譯器建議都用 long 儲存正整數,有必要時再換成浮點數。
2. 在 Java 下質數運算用浮點數會更快更有效率 (但是你只能算出小於 4,503,599,627,370,495 的質數)
我先去睡個覺浮點數: 1957 ms
長整數: 5023 ms