[問題] 如何縮短判斷的時間

看板java作者 (鍵盤小底迪)時間10年前 (2015/03/18 00:02), 編輯推噓6(6014)
留言20則, 4人參與, 最新討論串1/1
目前手上有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

03/18 00:06, , 1F
時分秒標籤要分類很累, 不如全部換成秒來算
03/18 00:06, 1F

03/18 00:15, , 2F
用樓上作法搭配精巧的算數應該可以用array來做
03/18 00:15, 2F

03/18 00:20, , 3F
感覺全部用秒數算好像會快一點 試試看 thx
03/18 00:20, 3F

03/18 12:44, , 4F
你的精確度到秒 一天也才86400秒 而且還每5秒分bucket
03/18 12:44, 4F

03/18 12:44, , 5F
700萬筆資料不會重複嗎? 怎會是用TreeMap? 應該是mul
03/18 12:44, 5F

03/18 12:44, , 6F
timap吧 你的key value是什麼?
03/18 12:44, 6F

03/18 13:29, , 7F
我的calue值可以用array 去存在那個時段的資料
03/18 13:29, 7F

03/18 13:29, , 8F
value
03/18 13:29, 8F

03/18 13:30, , 9F
key是時段
03/18 13:30, 9F

03/18 13:47, , 10F
用 guava collection library 依照資料特性及你讀寫
03/18 13:47, 10F

03/18 13:47, , 11F
的需求選擇 ListMultimap 或 SetMultimap 的實作 如果
03/18 13:47, 11F

03/18 13:47, , 12F
資料彼此獨立 可試試開多個 thread 寫入 此時要使用 M
03/18 13:47, 12F

03/18 13:47, , 13F
ultimaps.synchronizedSetMultimap(com.google.common
03/18 13:47, 13F

03/18 13:47, , 14F
.collect.SetMultimap<K, V>) 達到 thread safe
03/18 13:47, 14F

03/18 13:53, , 15F
一開始建立 multimap 物件時 要給預估的容量 假設資
03/18 13:53, 15F

03/18 13:53, , 16F
料平均分配 那就是 700萬除以bucket數量 避免過多reha
03/18 13:53, 16F

03/18 13:53, , 17F
shing
03/18 13:53, 17F

03/18 14:10, , 18F
700萬筆數目也不小 可開啟JDK附的Jvisualvm工具看memo
03/18 14:10, 18F

03/18 14:10, , 19F
ry 使用狀況 調大 heap size
03/18 14:10, 19F

03/18 16:54, , 20F
嗯嗯 謝謝各位大大的建議
03/18 16:54, 20F
文章代碼(AID): #1L250fWl (java)
文章代碼(AID): #1L250fWl (java)