Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/Lucene.Net.Light.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/Util/AverageGuessMemoryModel.cs')
-rw-r--r--src/core/Util/AverageGuessMemoryModel.cs90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/core/Util/AverageGuessMemoryModel.cs b/src/core/Util/AverageGuessMemoryModel.cs
new file mode 100644
index 0000000..43dae7a
--- /dev/null
+++ b/src/core/Util/AverageGuessMemoryModel.cs
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Lucene.Net.Util
+{
+
+ /// <summary> An average, best guess, MemoryModel that should work okay on most systems.
+ ///
+ /// </summary>
+ public class AverageGuessMemoryModel:MemoryModel
+ {
+ public AverageGuessMemoryModel()
+ {
+ InitBlock();
+ }
+
+ private void InitBlock()
+ {
+ sizes = new IdentityDictionary<Type, int>()
+ {
+ {typeof (bool), 1},
+ {typeof (byte), 1},
+ {typeof(sbyte), 1},
+ {typeof (char), 2},
+ {typeof (short), 2},
+ {typeof (int), 4},
+ {typeof (float), 4},
+ {typeof (double), 8},
+ {typeof (long), 8}
+ };
+ }
+ // best guess primitive sizes
+ private System.Collections.Generic.Dictionary<Type, int> sizes;
+
+ /*
+ * (non-Javadoc)
+ *
+ * <see cref="Lucene.Net.Util.MemoryModel.getArraySize()"/>
+ */
+
+ public override int ArraySize
+ {
+ get { return 16; }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * <see cref="Lucene.Net.Util.MemoryModel.getClassSize()"/>
+ */
+
+ public override int ClassSize
+ {
+ get { return 8; }
+ }
+
+ /* (non-Javadoc)
+ * <see cref="Lucene.Net.Util.MemoryModel.getPrimitiveSize(java.lang.Class)"/>
+ */
+ public override int GetPrimitiveSize(Type clazz)
+ {
+ return sizes[clazz];
+ }
+
+ /* (non-Javadoc)
+ * <see cref="Lucene.Net.Util.MemoryModel.getReferenceSize()"/>
+ */
+
+ public override int ReferenceSize
+ {
+ get { return 4; }
+ }
+ }
+} \ No newline at end of file