看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): Visual Studio 2013 C++ Express 額外使用到的函數庫(Library Used): C++ STL 問題(Question): 開啟檔案速度過慢,別人的版本(JAVA只要10秒左右),我的要60秒 餵入的資料(Input):1M Transaction(一百萬筆交易) Transaction Format為 I_1 I_2 .... I_N:value:U_1 U_2 ... U_N U_k分別對應每個I_k, value是整個交易的U總和(已經計算好) 預期的正確結果(Expected Output):執行時間希望能縮短 程式碼(Code): http://pastebin.com/iLq0BN8Q -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.134.26.18 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1426487971.A.2CD.html
micola: 應該是程序效率問題 vector. 03/16 19:36
CaptainH: stringstream 極慢 03/16 23:21
PkmX: 要快的話就自己寫parser + 用 mmap 03/16 23:32
PkmX: 而且我看OneItem_TWU是用vector存kv pair和linear search 03/16 23:33
PkmX: 最後再sort 為何不就直接用std::map呢? 03/16 23:34
xthe: 用Map是很好 但是我要對value做sort, 不能對key sort 03/17 09:00
Killercat: 把pair丟進vector在sort, sort可以指定comparer 03/17 09:15
Killercat: 就可以讓他比較value了 03/17 09:15
Killercat: 不過sort是C++11滿落後的一塊 不支援lambda 03/17 09:17
bibo9901: @@ 不支援!? 03/17 09:25
EdisonX: 我怎記得std::sort第三個參數可以塞lambda,還是我誤會了. 03/17 09:27
Killercat: 誒 可以嗎!? 我怎麼還笨笨的做個struct給他operator< 03/17 09:51
xthe: 我也是做一個struct讓他operator的 03/17 09:52
Killercat: 誒看了一下確定可以 是我沒catch到 拍寫 XD 03/17 09:52
Killercat: 你把map iterator塞進vector 再sort 效能不錯的 03/17 09:53
xthe: stringstream的問題好像比較大 但不知道怎解決orz 03/17 09:55
Killercat: 不要用啊... 他跟lexical_cast吃的效能是同等級的 03/17 09:57
Killercat: 不要依靠他去parse,自己parse一下。atoi/itoa 03/17 09:58
xthe: 我現在卡在fin進來是 string, 如何把many ints :int: many i 03/17 10:46
xthe: 切成vector<int> I:int tu: vector<int> U; 03/17 10:47
xthe: 先substr成前中後三段 再進行處理 03/17 10:47
BlazarArc: 用string的find_first_of的找冒號應該沒有很難? 03/17 11:05
Killercat: 找:的位置 -> 把:換成\0 ->對每個起點atoi 03/17 11:25
Killercat: atoi效能應該是上面那些東西的....500倍吧 profile看看 03/17 11:26
PkmX: std::stoi表示: 03/17 12:22
EdisonX: @原 po , std::sort lambda , 可參考 #1H2iYSIt section6 03/17 20:00
longlongint: release? 03/20 15:03
ibmibmibm: std::ios::sync_with_stdio(false);std::cin.tie(0); 03/20 15:41
xthe: 謝謝大家O_O 03/20 18:25