如何高效的实现一个计数器map(三)

2014-11-24 11:20:10 · 作者: · 浏览: 12
req.put(word, new MutableInt());
185: } else {
186: count.increment();
187: }
188: }
189: }
190: }
191:
192: @Override
193: String getName() {
194: return "MutableInt";
195: }
196:
197: }
198:
199: class UseGuava extends Tester {
200: AtomicLongMap map = AtomicLongMap.create();
201:
202: @Override
203: void doAction(int cycles) {
204: for (int i = 0; i < cycles; i++) {
205: for (String word : strs) {
206: map.getAndIncrement(word);
207: }
208: }
209: }
210:
211: @Override
212: String getName() {
213: return "Guava AtomicLongMap";
214: }
215:
216: }
217:
218: class UseGuava2 extends Tester {
219: Multiset bag = HashMultiset.create();
220:
221: @Override
222: void doAction(int cycles) {
223: for (int i = 0; i < cycles; i++) {
224: for (String word : strs) {
225: bag.add(word);
226: }
227: }
228: }
229:
230: @Override
231: String getName() {
232: return "Guava HashMultiSet";
233: }
234:
235: }
输出结果如下:
1: -----With 100 cycles-----
2: ====BaseLineTest Case
3: start at 1358655702729
4: Time used: 7 ms
5: ====TestForNullTest Case
6: start at 1358655702736
7: Time used: 3 ms
8: ====AtomicLongTest Case
9: start at 1358655702739
10: Time used: 14 ms
11: ====TroveTest Case
12: start at 1358655702753
13: Time used: 2 ms
14: ====MutableIntTest Case
15: start at 1358655702755
16: Time used: 2 ms
17: ====Guava AtomicLongMapTest Case
18: start at 1358655702757
19: Time used: 4 ms
20: ====Guava HashMultiSetTest Case
21: start at 1358655702761
22: Time used: 7 ms
23: ------------------------
24: -----With 1000 cycles-----
25: ====BaseLineTest Case
26: start at 1358655702768
27: Time used: 17 ms
28: ====TestForNullTest Case
29: start at 1358655702785
30: Time used: 7 ms
31: ====AtomicLongTest Case
32: start at 1358655702792
33: Time used: 44 ms
34: ====TroveTest Case
35: start at 1358655702836
36: Time used: 17 ms
37: ====MutableIntTest Case
38: start at 1358655702853
39: Time used: 5 ms
40: ====Guava AtomicLongMapTest Case
41: start at 1358655702858
42: Time used: 9 ms
43: ====Guava HashMultiSetTest Case
44: start at 1358655702868
45: Time used: 50 ms
46: ------------------------
47: -----With 10000 cycles-----
48: ====BaseLineTest Case
49: start at 1358655702918
50: Time used: 16 ms
51: ====TestForNullTest Case
52: start at 1358655702934
53: Time used: 14 ms
54: ====AtomicLongTest Case
55: start at 1358655702948
56: Time used: 29 ms
57: ====TroveTest Case
58: start at 1358655702977
59: Time used: 10 ms
60: ====MutableIntTest Case
61: start at 1358655702988
62: Time used: 5 ms
63: ====Guava AtomicLongMapTest Case
64: start at 1358655702993
65: Time used: 15 ms
66: ====Guava HashMultiSetTest Case
67: start at 1358655703009
68: Time used: 77 ms
69: ------------------------
70: -----With 100000 cycles-----
71: ====BaseLineTest Case
72: start at 1358655703086