使用反射执行效率测试-1

来源:互联网 发布:c windows.h 编辑:程序博客网 时间:2024/09/21 06:35

控制台程序  中间省略BLL层 随意写的结构不合理,别批评哈.......

先贴源码:

1.DAL

Category.cs类

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Model;using System.Data.SqlClient;using IDAL;namespace DAL{    public class Category : ICategory    {        // Static constants        /// <summary>        /// Method to get all categories        /// </summary>        public string s1 = "";        public string s11 = "";        public string s111 = "";        public string s1111 = "";        public string s11111 = "";        public string s111111 = "";        public string s1111111 = "";        public string s11111111 = "";        public string s111111111 = "";        public string s1111111111 = "";        public string s11111111111 = "";        public string s111111111111 = "";        public static string s2 = "";        public IList<CategoryInfo> GetCategories()        {            IList<CategoryInfo> categories = new List<CategoryInfo>();            return categories;        }        /// <summary>        /// Get an individual category based on a provided id        /// </summary>        /// <param name="categoryId">Category id</param>        /// <returns>Details about the Category</returns>        public CategoryInfo GetCategory(string categoryId)        {            //Set up a return value            CategoryInfo category = null;            //Create a parameter            return category;        }    }}


DataAccess.cs类

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace DAL{    public sealed class DataAccess    {        private DataAccess() { }        public static IDAL.ICategory CreateCategory()        {            string path = "DAL";            string className = path + ".Category";            return (IDAL.ICategory)Assembly.Load(path).CreateInstance(className);        }    }}


2.IDAL层

ICategory.cs类

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Model;namespace IDAL{    public interface ICategory    {        /// <summary>        /// Method to get all categories        /// </summary>        /// <returns>Interface to Model Collection Generic of categories</returns>        IList<CategoryInfo> GetCategories();        /// <summary>        /// Get information on a specific category        /// </summary>        /// <param name="categoryId">Unique identifier for a category</param>        /// <returns>Business Entity representing an category</returns>        CategoryInfo GetCategory(string categoryId);    }}


3.Model层

CategoryInfo.cs类

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Model{    [Serializable]    public class CategoryInfo    {        // Internal member variables        private string id;        private string name;        private string description;        /// <summary>        /// Default constructor        /// </summary>        public CategoryInfo() { }        /// <summary>        /// Constructor with specified initial values        /// </summary>        /// <param name="id">Category Id</param>        /// <param name="name">Category Name</param>        /// <param name="description">Category Description</param>        public CategoryInfo(string id, string name, string description)        {            this.id = id;            this.name = name;            this.description = description;        }        // Properties        public string Id        {            get { return id; }        }        public string Name        {            get { return name; }        }        public string Description        {            get { return description; }        }    }}


4.控制台主方法执行部分

using System;using System.Collections.Generic;using System.Linq;using System.Text;using DAL;using IDAL;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("100次执行时间");            Console.WriteLine("---------------------------------------------------------------");            string timeBeginF_1 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("实例化对象(未使用反射)");            Console.WriteLine("起始时间:" + timeBeginF_1);            for (int i = 0; i < 100; i++)            {                Category cat = new Category();            }            string timeEndF_1 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("终止时间:" + timeEndF_1);            string timeBeginF_2 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("实例化对象(使用反射)");            Console.WriteLine("起始时间:" + timeBeginF_2);            for (int i = 0; i < 100; i++)            {                ICategory dal = DataAccess.CreateCategory();            }            string timeEndF_2 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("终止时间:" + timeEndF_2);            Console.WriteLine("---------------------------------------------------------------");            Console.WriteLine("1000次执行时间");            Console.WriteLine("---------------------------------------------------------------");            string timeBeginS_1 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("实例化对象(未使用反射)");            Console.WriteLine("起始时间:" + timeBeginS_1);            for (int i = 0; i < 1000; i++)            {                Category cat = new Category();            }            string timeEndS_1 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("终止时间:" + timeEndS_1);            string timeBeginS_2 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("实例化对象(使用反射)");            Console.WriteLine("起始时间:" + timeBeginS_2);            for (int i = 0; i < 1000; i++)            {                ICategory dal = DataAccess.CreateCategory();            }            string timeEndS_2 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("终止时间:" + timeEndS_2);            Console.WriteLine("---------------------------------------------------------------");            Console.WriteLine("10000次执行时间");            Console.WriteLine("---------------------------------------------------------------");            string timeBeginT_1 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("实例化对象(未使用反射)");            Console.WriteLine("起始时间:" + timeBeginT_1);            for (int i = 0; i < 10000; i++)            {                Category cat = new Category();            }            string timeEndT_1 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("终止时间:" + timeEndT_1);            string timeBeginT_2 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("实例化对象(使用反射)");            Console.WriteLine("起始时间:" + timeBeginT_2);            for (int i = 0; i < 10000; i++)            {                ICategory dal = DataAccess.CreateCategory();            }            string timeEndT_2 = DateTime.Now.ToString() + "  " + DateTime.Now.Millisecond.ToString();            Console.WriteLine("终止时间:" + timeEndT_2);            Console.WriteLine("---------------------------------------------------------------");                    }    }}

最后时间对比:


 

 

原创粉丝点击