コード例 #1
0
        protected void CheckSerializerPerf(PivotData pvtData, string serializerName, Func <PivotDataState, object> serialize, Func <object, PivotDataState> deserialize)
        {
            var sw = new Stopwatch();

            sw.Start();
            var pvtState = pvtData.GetState();

            sw.Stop();
            Console.WriteLine("PivotData GetState time: {0}", sw.Elapsed);


            sw.Restart();
            var serializedState = serialize(pvtState);

            sw.Stop();
            Console.WriteLine("PivotDataState {0} serialize time: {1}", serializerName, sw.Elapsed);

            sw.Restart();
            var pvtStateFromSerialized = deserialize(serializedState);

            sw.Stop();
            Console.WriteLine("PivotDataState {0} Deserialize time: {1}", serializerName, sw.Elapsed);

            var pvtData3 = new PivotData(new string[] { "year", "month", "a", "i" }, new CountAggregatorFactory(), true);

            sw.Restart();
            pvtData3.SetState(pvtStateFromSerialized);
            sw.Stop();
            Console.WriteLine("PivotData SetState time: {0}", sw.Elapsed);

            Assert.Equal(pvtState.KeyValues.Length, pvtStateFromSerialized.KeyValues.Length);
            Assert.Equal(pvtState.ValueKeys.Length, pvtStateFromSerialized.ValueKeys.Length);
            Assert.Equal(pvtState.Values.Length, pvtStateFromSerialized.Values.Length);
        }
コード例 #2
0
        public void PivotData_GetState()
        {
            var testData = generateData();
            var pvtData  = new PivotData(new string[] { "name", "qty" }, new CountAggregatorFactory(), testData, false);
            var pvtState = pvtData.GetState();

            var pvtData2 = new PivotData(new string[] { "name", "qty" }, new CountAggregatorFactory(), false);

            pvtData2.SetState(pvtState);

            Action <PivotData, PivotData> check = (pvt1, pvt2) => {
                Assert.Equal(pvt1.AllValues.Count, pvt2.AllValues.Count);
                Assert.Equal(pvt1[ValueKey.Empty2D].Value, pvt2[ValueKey.Empty2D].Value);

                foreach (var vk in pvt1.AllValues)
                {
                    Assert.Equal(pvt1[vk.Key].Value, pvt2[vk.Key].Value);
                    Assert.Equal(pvt1[vk.Key].Count, pvt2[vk.Key].Count);
                }
            };

            check(pvtData, pvtData2);

            var jsonState = JsonConvert.SerializeObject(pvtState);
            //Output.WriteLine(jsonState);

            var pvtStateFromJson = JsonConvert.DeserializeObject <PivotDataState>(jsonState);
            var pvtData3         = new PivotData(new string[] { "name", "qty" }, new CountAggregatorFactory(), false);

            pvtData3.SetState(pvtStateFromJson);

            check(pvtData, pvtData3);

            // internal serialization
            var memStream = new MemoryStream();

            pvtState.Serialize(memStream);

            memStream = new MemoryStream(memStream.ToArray());
            var pvtStateFromSerialized = PivotDataState.Deserialize(memStream);
            var pvtData4 = new PivotData(new string[] { "name", "qty" }, new CountAggregatorFactory(), false);

            pvtData4.SetState(pvtStateFromSerialized);

            check(pvtData, pvtData4);
        }