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, }; }
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, }); }
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"); }
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"); }
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"); }