Re: [問題] 請益關於android在運算上的效能

看板java作者時間13年前 (2010/11/06 18:10), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《qrtt1 (null)》之銘言: : ※ 引述《sdallan ()》之銘言: : : 情況是這樣的。 小弟的專題測試在android的手機上, : : 以下這段code 執行時間竟然要九秒...在同樣的情況下, : : 於pc上測的話約 0.04~0.06秒左右。 怎麼差這麼多... : : 雖然兩個測試環境的差距明顯。不過我們目前在想辦法要在 : : 手機上的計算效率再提高。礙於學識不足,我實在是不知道哪裡還 : : 可以再提升,特來版上求解。 : : 這段code的用意在於,要將一個int陣列每個值,與2個bit做 AND。 : : 因為bit數有128個,找不到更好的資料型態去裝他了。 : : 以下這段在測試上,總共會執行4800次。 : : int [] iArray = int [64]; : : String binaryString = "010101001011001010..."; //長度為128 : : //依陣列的長度 : : for ( int i = 0 ; i < iArray.length ; i++ ){ : : //把值做or後再and : : iArray[i] = ( iArray[i] & 3 ) | : : //轉成2進制的數值 : : Integer.parseInt( : : //一次切2個bit出來 : : binaryString.substring((0+LSB*i), (2+LSB*i)),2 : : ) : : } : : 謝謝您耐心的看完他了。 : 如果你的PC是單核,如果你的CPU速度是 1GHz 以下。 : 那可能速度就不會差那麼多倍了。 : 另外,為什麼不採用 int[] 或 byte[] 來存你的 128 個 01 : 你用字串作,每一次的 substring 都在產生新的 String : 還要再另外把它轉成 int。 : 你要加快它在 Android 下跑的速度,要先避開這些奢侈的習慣。 謝謝您的回應。 關於資料型態的問題真的有些許的無奈。 該128長度的字串,其實是從 BigInteger 物件傳來的 我們將一個極大的整數進行加密後,而直接使用 BigInteger.toString(2) 這樣的方法將其轉為2進制的表示方式 ※關鍵在於大數直接轉二進制的表示 我在想著,將其轉成字串表示後,再切成 int [], 不也同樣需先substring?也同樣需一次的parseInt? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.72.91
文章代碼(AID): #1CrIcpwB (java)
討論串 (同標題文章)
文章代碼(AID): #1CrIcpwB (java)