Пример #1
0
        private static IndexReadTimingResult GetIndexReadTimingResult(int numberOfItems)
        {
            var dummyCollectionOfData = (from x in Enumerable.Range(1, numberOfItems)
                                         select new TestClass { TestValue = Guid.NewGuid().ToString() })
                .ToList();

            Func<PropertyReadStrategy, int, long> timeFor = (readerStrategy, iterations) =>
                                                                {
                                                                    var stopwatch = Stopwatch.StartNew();
                                                                    var reader = new PropertyReader<TestClass>(readerStrategy, "TestValue");
                                                                    for (int i = 0; i < iterations; i++)
                                                                    {
                                                                        reader.ReadValue(dummyCollectionOfData[i]);
                                                                    }
                                                                    stopwatch.Stop();
                                                                    return stopwatch.ElapsedTicks;
                                                                };

            // Run each once to initialize any system level (possibly jitting???) or eronous code...
            timeFor(PropertyReadStrategy.Reflection, 1);
            timeFor(PropertyReadStrategy.DelegateMethod, 1);

            var reflectionTime = timeFor(PropertyReadStrategy.Reflection, numberOfItems);
            var delegateMethodTime = timeFor(PropertyReadStrategy.DelegateMethod, numberOfItems);

            return new IndexReadTimingResult
                    {
                        DelegateMethodTime = delegateMethodTime,
                        ReflectionTime = reflectionTime,
                        Iterations = numberOfItems,
                    };
        }
Пример #2
0
        private static IndexReadTimingResult GetIndexReadTimingResult(int numberOfItems)
        {
            var dummyCollectionOfData = (from x in Enumerable.Range(1, numberOfItems)
                                         select new TestClass {
                TestValue = Guid.NewGuid().ToString()
            })
                                        .ToList();

            Func <PropertyReadStrategy, int, long> timeFor = (readerStrategy, iterations) =>
            {
                var stopwatch = Stopwatch.StartNew();
                var reader    = new PropertyReader <TestClass>(readerStrategy, "TestValue");
                for (int i = 0; i < iterations; i++)
                {
                    reader.ReadValue(dummyCollectionOfData[i]);
                }
                stopwatch.Stop();
                return(stopwatch.ElapsedTicks);
            };

            // Run each once to initialize any system level (possibly jitting???) or eronous code...
            timeFor(PropertyReadStrategy.Reflection, 1);
            timeFor(PropertyReadStrategy.DelegateMethod, 1);

            var reflectionTime     = timeFor(PropertyReadStrategy.Reflection, numberOfItems);
            var delegateMethodTime = timeFor(PropertyReadStrategy.DelegateMethod, numberOfItems);

            return(new IndexReadTimingResult
            {
                DelegateMethodTime = delegateMethodTime,
                ReflectionTime = reflectionTime,
                Iterations = numberOfItems,
            });
        }
Пример #3
0
        public void Should_be_able_to_read_the_value_of_a_type_using_the_Reflection_strategy()
        {
            var t = new TestClass {
                TestValue = "Hi"
            };
            var p = new PropertyReader <TestClass>(PropertyReadStrategy.Reflection, "TestValue");

            p.ReadValue(t).ShouldEqual("Hi");
        }
Пример #4
0
		public void Should_be_able_to_read_the_value_of_a_type_using_the_Reflection_strategy()
		{
			var t = new TestClass { TestValue = "Hi" };
			var p = new PropertyReader<TestClass>(PropertyReadStrategy.Reflection, "TestValue");
			p.ReadValue(t).ShouldEqual("Hi");
		}
Пример #5
0
 public void Should_be_able_to_read_the_value_of_a_type_using_the_DelegateMethod_strategy()
 {
     var t = new TestClassA { TestValue = "Hi" };
     var p = new PropertyReader<TestClassA>(PropertyReadStrategy.DelegateMethod, "TestValue");
     p.ReadValue(t).ShouldEqual("Hi");
 }