天梯匹配演算法優化
03-01
匹配規則相對比較簡單,匹配只基於競技場積分,有一個動態擴大的匹配區間。初始的簡單粗暴的核心匹配演算法是:
for playerA in players for playerB in players if playerA match playerB then 匹配成功; end endend
但是這個演算法實在是效率不好,是O(n^2)的複雜度。
後來又實現一個基於hash的匹配演算法,將分數段每10分分為一段,作為hash表上一個key。玩家根據自己當前的匹配狀態把自己插入到一個或多個key下。同個key下的玩家可直接匹配。
使用初始演算法,1萬人(50萬同時在線以上)同時匹配耗時0.5s(單核)
優化後的演算法,100萬(5000萬同時在線)同時匹配耗時0.3s(單核)推薦閱讀:
※斷線重連問題綜述
※skynet初探
※幀同步和狀態同步
※通服整體架構設計概述
TAG:遊戲伺服器 |