2016-06-08 82 views
2

系統以格式:startTime,endTime,Request生成日誌。 如何計算最大併發請求數的時間間隔? 我嘗試使用hashmap作爲鍵值請求計數的時間戳。如果每個請求和更新計數器的開始和時間之間的所有值都填充密鑰,但是如果時間戳精確到毫秒,這將需要巨大的空間。查找最大併發進程數的時間間隔

+0

也許看看番石榴的RangeMap。 – shmosel

+0

從左到右掃描,跟蹤未終止間隔的數量。 –

回答

2

轉換列表以事件與屬性TS,值

STARTTIME:123456,結束時間:23456,請求:....變爲兩個事件:

(123456,1) (23456, -1)

您現在的請求數量將是事件的兩倍。

如果您按時間戳排序這些事件,則可以對它們進行迭代並加上和減去這些值。跟蹤您所看到的最大值和發生的時間戳。

由於您需要對事件進行排序並使用O(n)空間,因此它將在O(nlogn)中運行。