使用反射执行效率测试-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("---------------------------------------------------------------"); } }}
最后时间对比:
- 使用反射执行效率测试-1
- 测试Java反射效率
- Java反射的效率测试-优先使用FastMethod
- php代码执行效率测试工具xhprof安装&使用
- SQL语句执行效率测试
- SQL语句执行效率测试
- OpenCV RGB2LAB执行效率测试
- SQL语句执行效率及性能测试
- java final方法执行效率测试
- SQL语句执行效率及性能测试
- SQL语句执行效率及性能测试
- SQL语句执行效率及性能测试
- ruby: 如何测试ruby的执行效率?
- c++调用lua脚本测试执行效率
- SQLServer语句执行效率及性能测试
- Java300StudyNote(1)-反射机制-提高反射效率
- python中使用time模块计算代码执行效率的精度测试
- 使用 Selenium Grid2 来提高全球化测试中自动化截图的执行效率
- 关于 SubMenu
- Java Listener
- linq 多条件组织查询核心代码
- MVC模式已死?何不试试MOVE
- POJ 1208 The Blocks Problem (UVA 101)
- 使用反射执行效率测试-1
- Vbox使用点滴
- Apache Configuration
- js获取<select>下拉菜单的value值和text值
- uC/OS-II内存管理函数的二维指针
- 7月11日
- 探究TabHost 并解决关于Tab内容是多个Intent所出现的的问题
- MCPD 70-519 Exam Ref Vocabulary
- 通过基站信息(LAC,CID)调用google的json接口获取地理位置信息的Java代码