0
我設計了一種在java中進行油藏採樣的方法,我使用的代碼是here。在java中基於時間的油藏採樣?
我已經投入了巨大的文件中讀取了,這需要大約40秒讀很多出來之前把結果屏幕,然後再次讀取不少。該文件太大而無法存儲在內存中,只需從中選擇一個隨機樣本。
我希望我可以在那裏寫一個額外的while循環讓它在設定的時間段內放置我的reservoirList
,而不是在它完成掃描文件之後。
喜歡的東西:
long startTime = System.nanoTime();
timeElapsed = 0;
while(sc.hasNext()) //avoid end of file
do{
long currentTime = System.nanoTime();
timeElapsed = (int) TimeUnit.MILLISECONDS.convert(startTime-currentTime,
TimeUnit.NANOSECONDS);
//sampling code goes here
}while(timeElapsed%5000!=0)
return reservoirList;
} return reservoirList;
但這輸出同一行線的一堆(不是我ReservoirList全長),然後整體流(幾百?)。
有沒有更好的方法來做到這一點?或許,如果可能的話,它也可以起作用。
你有沒有考慮這樣做的同時,通過共享閱讀之間的併發收集和編寫線程? –
@DavidGrant我沒有真正涉足併發。我會研究它。 – Pureferret
這可能很有用:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html –