0
使用輪詢系統或基於事件的定時器,更快和「更好的做法」是什麼?使用基於事件的定時器與輪詢的性能考慮
我目前正在與更高級的同事討論如何實現一些任務關鍵邏輯。情況如下:
- 接收到給出執行時間的消息。
- 當達到執行時間時,必須執行一些邏輯。
- 現在可以接收多個消息,給出不同的執行時間,並且邏輯必須每次執行。
我認爲實現邏輯的最好方法是創建一個計時器,當消息在消息中時觸發邏輯,但我的同事認爲我會更好地輪詢列表看看是否已經達到執行時間。
他的觀點是投票系統更安全,因爲它不那麼複雜,因此不太可能被程序員搞砸。我的觀點是,通過以我的方式實現它,我們減少了計算負擔,從而更有可能在我們真正需要它執行時執行邏輯。我應該如何實現它,爲什麼?
請求的信息
- 我的邏輯都不會被利用幾乎肯定會在最高負載的時間只有一次。
- 該要求並未指定連接的可靠程度,但我曾與之交談過的每個人均聲明,他們從未聽說過丟失的消息。
- 調度基於絕對系統。所以,這個消息會有一個執行時間,指定何時應該執行一個算法。由於時間同步,我被指示假設所有機器的時間都是一致的。
- 獲得執行的算法使用一些輸入,它們最初是不穩定的,但很快穩定下來。通過推遲處理,我希望能夠使用最穩定的信息。
你能告訴我們更多關於它有多重負荷嗎?每秒多少個任務?每項任務需要多長時間? – hexafraction
我相信'事件驅動'幾乎總是首選'輪詢',這可能會消耗CPU時間。此外,「事件驅動」更靈活,可以更容易地根據您的需求進行定製。 – Houdini
@Houdini作爲一個經驗法則,你可能是對的,但它一如既往:一個需求的問題。也許你的事件/消息是通過不可靠的連接發送的。在這種情況下,你不能100%確定一個重要的信息不會丟失。投票可能會幫助你顯示這些問題,也許你可以做些事情來治癒這種情況。當然,事件處理和輪詢可以組合成混合解決方案。 – user573215