看板 R_Language 關於我們 聯絡資訊
效能諮詢(我想讓R 跑更快) [問題敘述]: 我自己想了一支多維度pareto front / pareto optimize 演算法的部分是自己跟同事想的,沒有參照別人的code, line 6 資料排序的部分有po過版,是C版幫解決的。 目前發現這隻稍慢,希望速度更快一點, 不知有沒有什麼好的寫法。 如果哪天我把這隻跟其他最佳化的function傳上cran,會放幫忙修改的人的名字的。 [程式範例]: 請見 http://pastebin.com/A3Uh73Dx P是一個matrix, column 是目標函數 執行範例 MPF(matrix(runif(100),20,5)) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.114.4.176 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1478407711.A.20D.html ※ 編輯: Edster (58.114.4.176), 11/06/2016 12:51:11
Edster: 說明一下,平常可能用到的維度是 rows = 10^6, cols = 6. 11/06 12:52
celestialgod: http://pastebin.com/u6AsFtQd 11/06 18:58
celestialgod: 部分邏輯沒實現,因為沒看懂XDD 11/06 18:59
celestialgod: m[i] %in% r那段ifelse,我看不出來else的必要 11/06 18:59
celestialgod: 所以你測試看看你的情況 11/06 18:59
celestialgod: 我只是把你的8~11行改成我的35行那樣寫法 11/06 19:00
celestialgod: 速度主要差異在那 11/06 19:00
Edster: 那段只是為了找下一個i, 剛開始寫的時候while停不下來. 11/06 20:56
Edster: 陸陸續續加一堆條件,舊得也沒有重整,成為現在樣子。 11/06 21:00
Edster: 包含矩陣P中不能有NA也是後來使用一陣子才加的條件。 11/06 21:05
Edster: 最讓我感到神奇的是,這段我寫了應該有一個禮拜,佩服C版 11/06 21:06
celestialgod: 恩恩,我不確定我拿掉那塊會不會出問題 11/06 21:25
celestialgod: 你自己改成你可以用的就好~~ 11/06 21:25
celestialgod: 主要是兩個迴圈跟重新alocate x,y花太久 11/06 21:26
celestialgod: 用sweep做到一次比完 在配上rowsums去做any條件就好 11/06 21:26