各スレッドがデータベースに挿入するのにかかる時間を測定しようとしています。ConcurrentHashMap
各スレッドの挿入にかかる時間など、名前付きマップにこれらすべてのパフォーマンス数値をキャプチャしました。その同時ハッシュマップでは、次のようになります。
Key- 10
Value- 2
つまり、2回の通話が10ミリ秒で戻ってきました。以下の別の例
Key - 20
Value -1
つまり、1回の呼び出しが20ミリ秒で戻ってきました。
そして、そのマップにはより多くのデータが含まれるため、より多くのキーと値のペアが含まれます。
だから今、私は上記の同じマップを使用して以下のようなことをしようとしています。つまり、その特定の範囲で以下の数値を取得するには、上記のマップを繰り返す必要があります。それは可能ですか?
How many calls(X number) came back in between 1 and 20 ms
How many calls(X number) came back in between 20 and 40 ms
How many calls(X number) came back in between 40 and 60 ms
How many calls(X number) came back in between 60 and 80 ms
How many calls(X number) came back in between 80 and 100 ms
How many calls(X number) came back after 100 ms
私が最初に考えたいくつかのコード。
SortedSet<Long> keys = new TreeSet<Long>(map.keySet());
for (Long key : keys) {
System.out.print(key + " : ");
for (int i = 0; i < map.get(key); i++) {
// Not sure what I am supposed to do here?
}
System.out.println();
}
誰かがここで私を助けることができますか?
アップデート:-
私の地図のサンプル値-
{31=3, 48=1, 33=1, 30=12, 43=1, 38=1, 32=1}
これは、合計呼び出しがから3+1+1+12+1+1+1 = 20
追加することによって行われたことを意味しますvalue
map
そして、その中から、上記のシナリオがこのようなものを意味することを理解する必要があります
How many calls(X number) came back in between 1 and 20 ms
How many calls(X number) came back in between 20 and 40 ms
How many calls(X number) came back in between 40 and 60 ms
How many calls(X number) came back in between 60 and 80 ms
How many calls(X number) came back in between 80 and 100 ms
How many calls(X number) came back after 100 ms
以下は私が以下の提案で試した私のコードです-
private static void drawHistogram(Map map){
int counter[] = new int[6];
for (Integer key : map.keySet()) {
System.out.println("" + key);
// add sample
int idx = key / 20;
idx = Math.min(idx, counter.length - 1);
counter[idx]++;
}
for (int i = 0; i < counter.length; i++) {
System.out.println(counter[i] + " came back in between " + i * 20 + " and " + (i + 1) * 20
+ " ms");
}
}
ご覧のとおり、20回の呼び出しがありますが、これは7回の呼び出しのみを示しています。私がしたことは何か間違っていますか?これは私が得た出力です-
0 came back in between 0 and 20 ms
5 came back in between 20 and 40 ms
2 came back in between 40 and 60 ms
0 came back in between 60 and 80 ms
0 came back in between 80 and 100 ms
0 came back in between 100 and 120 ms
これは7つの呼び出しのみを示しています。しかし、20の呼び出しがあります。