看板 java 關於我們 聯絡資訊
目前手上有700多萬筆資料 每一筆都有時間點(時:分:秒) 然後我想把每一筆資料作歸類 每5秒為一個區隔 例如: 00:00:04的資料會被歸類到 00:00:00的bucket(用TreeMap實作) 小弟我的作法是先建立好所有時段bucket 每讀一筆資料 就會去判斷是在哪個時段bucket (從00:00:00 一直加5秒 至24:00:00結束) 但這樣很慢 有更快的作法嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.64.213 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1426608169.A.82F.html
LPH66: 時分秒標籤要分類很累, 不如全部換成秒來算 03/18 00:06
mars90226: 用樓上作法搭配精巧的算數應該可以用array來做 03/18 00:15
phoenixlife: 感覺全部用秒數算好像會快一點 試試看 thx 03/18 00:20
csieflyman: 你的精確度到秒 一天也才86400秒 而且還每5秒分bucket 03/18 12:44
csieflyman: 700萬筆資料不會重複嗎? 怎會是用TreeMap? 應該是mul 03/18 12:44
csieflyman: timap吧 你的key value是什麼? 03/18 12:44
phoenixlife: 我的calue值可以用array 去存在那個時段的資料 03/18 13:29
phoenixlife: value 03/18 13:29
phoenixlife: key是時段 03/18 13:30
csieflyman: 用 guava collection library 依照資料特性及你讀寫 03/18 13:47
csieflyman: 的需求選擇 ListMultimap 或 SetMultimap 的實作 如果 03/18 13:47
csieflyman: 資料彼此獨立 可試試開多個 thread 寫入 此時要使用 M 03/18 13:47
csieflyman: ultimaps.synchronizedSetMultimap(com.google.common 03/18 13:47
csieflyman: .collect.SetMultimap<K, V>) 達到 thread safe 03/18 13:47
csieflyman: 一開始建立 multimap 物件時 要給預估的容量 假設資 03/18 13:53
csieflyman: 料平均分配 那就是 700萬除以bucket數量 避免過多reha 03/18 13:53
csieflyman: shing 03/18 13:53
csieflyman: 700萬筆數目也不小 可開啟JDK附的Jvisualvm工具看memo 03/18 14:10
csieflyman: ry 使用狀況 調大 heap size 03/18 14:10
phoenixlife: 嗯嗯 謝謝各位大大的建議 03/18 16:54