Exemplo n.º 1
0
        public void Test_ReadSharedStrings()
        {
            var t = new StringsTable <SharedString>
            {
                String1 = "string",
                String2 = "foo",
                String3 = "string",
            };

            byte[] destination = new byte[1024];
            var    serializer  = FlatBufferSerializer.Default.Compile <StringsTable <SharedString> >()
                                 .WithSettings(new SerializerSettings
            {
                SharedStringWriterFactory = () => new SharedStringWriter(100),
                SharedStringReaderFactory = () => SharedStringReader.Create(100),
            });

            int bytesWritten = serializer.Write(SpanWriter.Instance, destination, t);

            var table = serializer.Parse(destination);

            Assert.AreEqual("string", (string)table.String1);
            Assert.AreEqual("foo", (string)table.String2);
            Assert.AreEqual("string", (string)table.String3);

            Assert.IsTrue(object.ReferenceEquals(table.String1.String, table.String3.String));
        }
Exemplo n.º 2
0
        public override void GlobalSetup()
        {
            this.regularStringSerializer = FlatBufferSerializer.Default.Compile <VectorTable <string> >();

            this.sharedStringSerializer = FlatBufferSerializer.Default.Compile <VectorTable <SharedString> >()
                                          .WithSettings(new SerializerSettings
            {
                SharedStringReaderFactory = () => SharedStringReader.Create(this.CacheSize),
                SharedStringWriterFactory = () => new SharedStringWriter(this.CacheSize),
            });

            this.sharedStringThreadSafeSerializer = FlatBufferSerializer.Default.Compile <VectorTable <SharedString> >()
                                                    .WithSettings(new SerializerSettings
            {
                SharedStringReaderFactory = () => SharedStringReader.CreateThreadSafe(this.CacheSize),
                SharedStringWriterFactory = () => new SharedStringWriter(this.CacheSize),
            });

            Random random = new Random();

            List <string> guids =
                Enumerable.Range(0, this.VectorLength)
                .Select(i => Guid.NewGuid().ToString()).ToList();

            List <string> randomGuids = Enumerable.Range(0, this.VectorLength)
                                        .Select(i => guids[random.Next(0, guids.Count)]).ToList();

            List <string> guassianGuids = Enumerable.Range(0, this.VectorLength)
                                          .Select(i => guids[NextGaussianInt(random, 0, guids.Count - 1)]).ToList();

            nonSharedStringVector = new VectorTable <string> {
                Vector = randomGuids.ToList()
            };
            randomSharedStringVector = new VectorTable <SharedString> {
                Vector = randomGuids.Select(SharedString.Create).ToList()
            };
            nonRandomSharedStringVector = new VectorTable <SharedString> {
                Vector = guassianGuids.Select(SharedString.Create).ToList()
            };

            int nonSharedSize = this.Serialize_RandomStringVector_WithRegularString();
            int cacheSize     = this.Serialize_NonRandomStringVector_WithSharing();

            Console.WriteLine($"NonSharedSize = {nonSharedSize}");
            Console.WriteLine($"DirectMapSize = {cacheSize}");
        }