pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / src / java / org / apache / lucene / util / AverageGuessMemoryModel.java
1 package org.apache.lucene.util;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import java.util.IdentityHashMap;
21 import java.util.Map;
22
23 /**
24  * An average, best guess, MemoryModel that should work okay on most systems.
25  * 
26  */
27 public class AverageGuessMemoryModel extends MemoryModel {
28   // best guess primitive sizes
29   private final Map<Class<?>,Integer> sizes = new IdentityHashMap<Class<?>,Integer>() {
30     {
31       put(boolean.class, Integer.valueOf(1));
32       put(byte.class, Integer.valueOf(1));
33       put(char.class, Integer.valueOf(2));
34       put(short.class, Integer.valueOf(2));
35       put(int.class, Integer.valueOf(4));
36       put(float.class, Integer.valueOf(4));
37       put(double.class, Integer.valueOf(8));
38       put(long.class, Integer.valueOf(8));
39     }
40   };
41
42   /*
43    * (non-Javadoc)
44    * 
45    * @see org.apache.lucene.util.MemoryModel#getArraySize()
46    */
47   @Override
48   public int getArraySize() {
49     return 16;
50   }
51
52   /*
53    * (non-Javadoc)
54    * 
55    * @see org.apache.lucene.util.MemoryModel#getClassSize()
56    */
57   @Override
58   public int getClassSize() {
59     return 8;
60   }
61
62   /* (non-Javadoc)
63    * @see org.apache.lucene.util.MemoryModel#getPrimitiveSize(java.lang.Class)
64    */
65   @Override
66   public int getPrimitiveSize(Class<?> clazz) {
67     return sizes.get(clazz).intValue();
68   }
69
70   /* (non-Javadoc)
71    * @see org.apache.lucene.util.MemoryModel#getReferenceSize()
72    */
73   @Override
74   public int getReferenceSize() {
75     return 4;
76   }
77
78 }