Пример #1
0
        public void FieldTest()
        {
            var timingHelper = new TimingHelper(_warmupIterations, _iterations);

            // One field.
            var oneFieldType = this._assembly.GetType("AssemblyToProcess.Performance.OneField");
            var instance     = (dynamic)Activator.CreateInstance(oneFieldType);
            var oneField     = new OneField();

            timingHelper.TimeIt("One Field",
                                new TimingHelper.Data("Deep Copy", () => instance.DeepCopy()),
                                new TimingHelper.Data("Hand Copy", () => instance.HCopy()),
                                new TimingHelper.Data("Clone", () => oneField.Clone())
                                );

            // Five fields.
            var fiveFieldsType = this._assembly.GetType("AssemblyToProcess.Performance.FiveFields");

            instance = (dynamic)Activator.CreateInstance(fiveFieldsType);
            var fiveFields = new FiveFields();

            timingHelper.TimeIt("Five Fields",
                                new TimingHelper.Data("Deep Copy", () => instance.DeepCopy()),
                                new TimingHelper.Data("Hand Copy", () => instance.HCopy()),
                                new TimingHelper.Data("Clone", () => fiveFields.Clone())
                                );

            // Ten fields.
            var tenFieldsType = this._assembly.GetType("AssemblyToProcess.Performance.TenFields");

            instance = (dynamic)Activator.CreateInstance(tenFieldsType);
            var tenFields = new TenFields();

            timingHelper.TimeIt("Ten Fields",
                                new TimingHelper.Data("Deep Copy", () => instance.DeepCopy()),
                                new TimingHelper.Data("Hand Copy", () => instance.HCopy()),
                                new TimingHelper.Data("Clone", () => tenFields.Clone())
                                );
        }