Example #1
0
File: Factory.cs Project: wobba/mmf
        private SortedDictionary <int, ISerializeDeserialize <T> > BenchmarkSerializers(IEnumerable <Type> listOfSerializers)
        {
            var benchmarkTimes = new SortedDictionary <int, ISerializeDeserialize <T> >();

            foreach (Type type in listOfSerializers)
            {
                try
                {
                    ISerializeDeserialize <T> serializer = InstantiateSerializer(type);
                    if (!serializer.CanSerializeType())
                    {
                        continue;
                    }
                    int count = BenchMarkSerializer(serializer);
                    if (count > 0)
                    {
                        benchmarkTimes.Add(count, serializer);
                    }
                }
                catch (Exception)
                {
                }
            }

            foreach (var valuePair in benchmarkTimes)
            {
                Trace.WriteLine(string.Format("{0} : {1}", valuePair.Key, valuePair.Value.GetType()));
            }

            return(benchmarkTimes);
        }
Example #2
0
File: Factory.cs Project: wobba/mmf
 private int BenchMarkSerializer(ISerializeDeserialize <T> serDeser)
 {
     object[] args = null;
     if (typeof(T) == typeof(string))
     {
         args = new object[] { new[] { 'T', 'e', 's', 't', 'T', 'e', 's', 't', 'T', 'e', 's', 't' } };
     }
     else if (typeof(T) == typeof(byte[]))
     {
         byte[]    test          = new byte[100];
         T         classInstance = (T)(object)test;
         Stopwatch sw            = Stopwatch.StartNew();
         int       count         = 0;
         while (sw.ElapsedMilliseconds < 500)
         {
             byte[] bytes = serDeser.ObjectToBytes(classInstance);
             serDeser.BytesToObject(bytes);
             count++;
         }
         sw.Stop();
         return(count);
     }
     try
     {
         T classInstance = (T)Activator.CreateInstance(typeof(T), args);
         DataHelper.AssignEmptyData(ref classInstance);
         Stopwatch sw    = Stopwatch.StartNew();
         int       count = 0;
         while (sw.ElapsedMilliseconds < 500)
         {
             byte[] bytes = serDeser.ObjectToBytes(classInstance);
             serDeser.BytesToObject(bytes);
             count++;
         }
         sw.Stop();
         return(count);
     }
     catch (MissingMethodException)
     {
         // Missing default constructor
         return(0);
     }
 }
Example #3
0
        public void BenchmarkSerializeMethod <T>(ISerializeDeserialize <T> serializer, object instance)
        {
            serializer.ObjectToBytes((T)instance);

            Stopwatch timed = new Stopwatch();

            timed.Start();

            byte[] bytes = null;
            for (int x = 0; x < Iterations; x++)
            {
                bytes = serializer.ObjectToBytes((T)instance);
            }

            timed.Stop();

            Trace.WriteLine("Serialize method: " + serializer.GetType().Name);
            Trace.WriteLine(timed.ElapsedMilliseconds + " ms");
            Trace.WriteLine("Data size: " + bytes.Length);
            Trace.WriteLine("");
        }
Example #4
0
File: Array.cs Project: wobba/mmf
        public Array(long capacity, string path, bool autoGrow, ISerializeDeserialize <T> serializer, IViewManager viewManager)
        {
            ValueSerializer = serializer;
            ViewManager     = viewManager;

            string fileName;

            if (File.Exists(path) || Path.GetExtension(path).Length > 0)
            {
                fileName = path;
            }
            else
            {
                fileName = Path.Combine(path, "mmf-" + Guid.NewGuid() + ".bin");
            }
            AutoGrow = autoGrow;

            InitWorkerBuffers();

            ViewManager.Initialize(fileName, capacity, _dataSize);
        }
Example #5
0
        public void BenchmarkDeserializeMethod <T>(ISerializeDeserialize <T> serializer, object instance)
        {
            var bytes = serializer.ObjectToBytes((T)instance);

            serializer.BytesToObject(bytes);

            Stopwatch timed = new Stopwatch();

            timed.Start();

            T value = default(T);

            for (int x = 0; x < Iterations; x++)
            {
                value = serializer.BytesToObject(bytes);
            }

            timed.Stop();

            Trace.WriteLine("Deserialize method: " + serializer.GetType().Name);
            Trace.WriteLine(timed.ElapsedMilliseconds + " ms");
            Trace.WriteLine(value);
            Trace.WriteLine("");
        }
Example #6
0
 static BackingUnknownSize()
 {
     _keySerializer   = _keyFactory.GetSerializer();
     _valueSerializer = _valueFactory.GetSerializer();
 }
Example #7
0
        private void InitializeControlFile()
        {
            if (File.Exists(_controlFile))
            {
                if (!File.Exists(_hashFile))
                {
                    throw new FileNotFoundException("Hash file is missing");
                }
                if (!File.Exists(_keyFile))
                {
                    throw new FileNotFoundException("Key file is missing");
                }
                if (!File.Exists(_valueFile))
                {
                    throw new FileNotFoundException("Value file is missing");
                }

                string[] settings = File.ReadAllLines(_controlFile);

                int ctrlCapacity = int.Parse(settings[0]);
                if (ctrlCapacity != _capacity)
                {
                    throw new ArgumentException("capacity differes from existing file. " + _capacity + " != " + ctrlCapacity);
                }


                //TODO: iterate over serializers and compare on name - create method on the factory
                _keySerializer = _keyFactory.GetSerializer(settings[1]);
                if (_keySerializer == null)
                {
                    throw new InvalidOperationException("Could not find serializer: " + settings[1]);
                }
                _valueSerializer = _valueFactory.GetSerializer(settings[2]);
                if (_valueSerializer == null)
                {
                    throw new InvalidOperationException("Could not find serializer: " + settings[2]);
                }
            }
            else
            {
                if (File.Exists(_hashFile))
                {
                    throw new InvalidOperationException("Hash file exists already");
                }
                if (File.Exists(_keyFile))
                {
                    throw new FileNotFoundException("Key file exists already");
                }
                if (File.Exists(_valueFile))
                {
                    throw new FileNotFoundException("Value file exists already");
                }

                using (var fileStream = File.CreateText(_controlFile))
                {
                    fileStream.WriteLine(_capacity.ToString());
                    fileStream.WriteLine(_keySerializer.GetType().AssemblyQualifiedName);
                    fileStream.WriteLine(_valueSerializer.GetType().AssemblyQualifiedName);
                }
            }
        }
Example #8
0
 public ByteArray(long capacity, string path, bool autoGrow, ISerializeDeserialize <byte> serializer, IViewManager viewManager)
     : base(capacity, path, autoGrow, serializer, viewManager)
 {
 }