Closed garyparrot closed 1 year ago
@garyparrot 感謝回報,可否指出幾個例子我們需要使用Broker
hash code的地方?
剛剛看了一下專案內會間接呼叫到 Broker#hashcode
或 Broker#equals
(equals 也會觸碰到昂貴的比較) 的是上面這幾個部分。
這個速度的影響對 Map 把 Replica 或 Broker 當 key 使用時比較有感。
原文提到的這個部分是我自己測試用的程式碼,所以或許和專案比較無關,這兩個函數的呼叫看起來目前還是比較罕見的
@garyparrot 感謝整理,那我接手處理這個議題
System.out.println(Duration.ofNanos((long) summary.getAverage()).toNanos());
我剛剛才注意到時間單位是奈秒 ... 這樣的話傷害應該不大,還是 @garyparrot 你有其他考量?
我剛剛才注意到時間單位是奈秒 ... 這樣的話傷害應該不大,還是 @garyparrot 你有其他考量?
抱歉,我剛剛測試了一下我自己 repo 那邊的影響不大 (10000 partition),後來有確定執行速度緩慢是其他部分的程式碼造成的。
抱歉,我剛剛測試了一下我自己 repo 那邊的影響不大 (10000 partition),後來有確定執行速度緩慢是其他部分的程式碼造成的。
感謝回覆,沒關係,這也讓我注意到一些資料結構的問題
Related PR: #1763, #1782
https://github.com/skiptests/astraea/blob/ced840f9ded6e4167ccbbc86a20f79f7ec6be0c0/common/src/main/java/org/astraea/common/admin/Broker.java#L36-L44
由於
Broker
本身儲存的狀態涉及 topic/partition,這連帶讓和他有關的物件的hashcode
計算量和叢集大小線性相關,有一些和他有關的物件的 hashcode 速度有變慢的現象,如Replica
。下面是在有 10000+ partition 的叢集做的測試:使用
Broker
前 (28ec2c6882c2fad0fffc7367d16e458dbd2e091c使用
Broker
後 (ced840f9ded6e4167ccbbc86a20f79f7ec6be0c0這個速度的影響對
Map
把Replica
或Broker
當 key 使用時比較有感。