本文主要进行Ioc容器性能对比测试。
先把代码贴上,代码很容易看明白,由于Munq编译时提示没有引用,明明添加了的,还没找到原因。
其他的测试代码后面添加。
using System; using System.Diagnostics; using System.Collections.Generic; using Autofac; using Autofac.Configuration; using Microsoft.Practices.Unity; //using Munq; namespace AutofacDemo { class Program { const long iterations = 10000; private static List<Test> ts = new List<Test> { new UnityTest(), new AutofacTest() }; static void Main(string[] args) { Console.WriteLine("Running {0} iterations", iterations); Console.WriteLine("{0,12}: {1,12} - {2,12} ", "Test Name", "Ticks", "mSec"); Console.WriteLine("-------------------------------------------------------"); ts.ForEach(c => Measure(c)); Console.Read(); } private static void Measure(Test t) { GC.Collect(); var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < iterations; i++) { t.Run(); } stopwatch.Stop(); var ticks = stopwatch.ElapsedTicks; Console.WriteLine("{0,12}: {1,12:N0} - {2,12:N2} ", t.GetType().Name, ticks, ticks * 1000 / Stopwatch.Frequency); } } abstract class Test { public abstract void Run(); } //public class MunqTest : Test //{ // public override void Run() // { // //step 1: create a container // IocContainer container = new IocContainer(); // //step 2: regesiter interface as a type // container.Register<IDal, OracleDal>(); // container.Resolve<IDal>().save(); // } //} class UnityTest:Test { static IUnityContainer container; static UnityTest() { //step 1: create a container container = new UnityContainer(); //step 2: regesiter interface as a type container.RegisterType(typeof(IDal), typeof(OracleDal)); } public override void Run() { container.Resolve<IDal>().save(); } } class AutofacTest:Test { static IContainer container; static AutofacTest() { var builder = new ContainerBuilder(); builder.Register<IDal>(c => new OracleDal()).SingleInstance(); container = builder.Build(); } public override void Run() { container.Resolve<IDal>().save(); } } interface IDal { void save(); } interface ILog { } class OracleDal : IDal { public void save() { //Console.WriteLine("SqlServer save."); } } class OracleDal2 : IDal { public ILog log { get; private set; } public OracleDal2(ILog log) { this.log = log; } public void save() { // Console.WriteLine("Oracle save."); } } }
您还没有登录,请您登录后再发表评论
- **特点**:Ninject是一款专为.NET平台设计的高性能IOC容器,它以其简洁的API和高效的性能而受到好评。Ninject的文档资源丰富,社区活跃,能够为用户提供充足的支持。 #### 结论 综上所述,每种IOC框架都有各自的...
- **Spring框架**:掌握Spring IoC容器、Spring MVC、Spring Boot和Spring Security等,理解依赖注入(DI)和面向切面编程(AOP)。 - **Struts**:熟悉Struts1与Struts2的区别,理解MVC模式,掌握ActionForm、Action、...
Spring框架是Java开发中最常用的轻量级开源框架之一,它为构建企业级应用程序提供了一整套服务。这里的"spring-framework-3.2.4.RELEASE"是Spring框架的一个特定版本,发布于2013年,是3.x系列中的一个稳定版本。这...
面试官可能会询问这些容器的特性、性能对比以及它们在不同场景下的适用性。 3. **并发编程**:Java中的线程和并发处理是高级面试的常见话题,包括synchronized关键字、volatile、ThreadLocal、并发工具类(如...
Spring的IOC容器简化了对象管理,AOP支持声明式事务管理,Mybatis则提供了简单直观的SQL映射,SpringMVC则提供了清晰的MVC架构,便于分工协作。 6. **系统功能** 该系统可能包含但不限于以下几个功能模块:用户...
7. **Spring框架**:对于企业级开发,Spring的使用是必备技能,面试中可能会问到IoC容器、AOP(面向切面编程)、事务管理、Spring Boot、Spring Cloud等相关知识。 8. **数据库**:SQL查询语言、索引、事务、存储...
1. Spring的核心组件:IoC容器、AOP、Bean管理。 2. Spring MVC:控制器、模型、视图解析、拦截器。 3. Spring Boot:自动配置、起步依赖、健康检查。 4. Spring Data JPA:持久层操作,与ORM框架的集成。 八、...
- **依赖注入**:掌握Spring IoC容器的基本使用方法,了解Bean的生命周期管理。 - **AOP应用**:深入理解面向切面编程的概念,学会定义切入点、通知类型,并能在实际项目中灵活运用。 ### 5. OSGi **知识点解析:*...
在本系统中,Spring主要负责依赖注入(Dependency Injection,DI),通过Bean容器管理对象的生命周期和依赖关系,使得代码松耦合,易于测试和维护。 2. **SpringMVC**:SpringMVC是Spring框架的一个模块,主要用于...
首先,SSM框架是Java Web开发中的常用技术栈,它由Spring框架提供IoC(Inversion of Control)容器和AOP(Aspect Oriented Programming)支持,SpringMVC负责处理HTTP请求和响应,而MyBatis则作为持久层框架,简化了...
11. **IOC容器**:理解其工作原理及注入方式。 12. **数据库优化**:熟悉常用的数据库(如Oracle),并了解如何进行查询优化。 #### 面试技巧与注意事项 - 在面试前,通过网络资源查找并复习相关知识点。 - 定期...
4. **集合框架**:详述ArrayList、LinkedList、HashMap、HashSet等常用集合类的使用,以及泛型、迭代器、并发容器(如ConcurrentHashMap)等进阶话题。 5. **多线程编程**:讲解线程的基本概念、创建方式、同步机制...
41. **依赖注入(DI)**:理解DI的概念,使用IoC容器如Autofac或Unity实现。 42. **微服务架构**:了解微服务设计原则,构建松耦合的服务。 43. **性能优化**:分析和优化代码性能,如使用Profiler工具。 44. **...
SSM是Java Web开发中常用的一站式解决方案,由Spring、SpringMVC和MyBatis三个组件构成。Spring作为核心容器,负责管理对象和依赖注入;SpringMVC处理HTTP请求,提供了模型-视图-控制器的设计模式;MyBatis则作为...
1. **Spring IOC容器**:理解依赖注入的概念及其初始化过程。 2. **BeanFactory** 与 **ApplicationContext** 的区别。 3. **Spring Bean生命周期**:了解Bean从创建到销毁的过程。 4. **Spring AOP**:面向切面编程...
- **IoC 定义**:Inversion of Control(控制反转)是一种设计思想,其核心在于将对象的控制权交由外部容器管理。 - **实现方式**: - **依赖注入**(Dependency Injection, DI):通过构造函数、setter 方法或方法...
相关推荐
- **特点**:Ninject是一款专为.NET平台设计的高性能IOC容器,它以其简洁的API和高效的性能而受到好评。Ninject的文档资源丰富,社区活跃,能够为用户提供充足的支持。 #### 结论 综上所述,每种IOC框架都有各自的...
- **Spring框架**:掌握Spring IoC容器、Spring MVC、Spring Boot和Spring Security等,理解依赖注入(DI)和面向切面编程(AOP)。 - **Struts**:熟悉Struts1与Struts2的区别,理解MVC模式,掌握ActionForm、Action、...
Spring框架是Java开发中最常用的轻量级开源框架之一,它为构建企业级应用程序提供了一整套服务。这里的"spring-framework-3.2.4.RELEASE"是Spring框架的一个特定版本,发布于2013年,是3.x系列中的一个稳定版本。这...
面试官可能会询问这些容器的特性、性能对比以及它们在不同场景下的适用性。 3. **并发编程**:Java中的线程和并发处理是高级面试的常见话题,包括synchronized关键字、volatile、ThreadLocal、并发工具类(如...
Spring的IOC容器简化了对象管理,AOP支持声明式事务管理,Mybatis则提供了简单直观的SQL映射,SpringMVC则提供了清晰的MVC架构,便于分工协作。 6. **系统功能** 该系统可能包含但不限于以下几个功能模块:用户...
7. **Spring框架**:对于企业级开发,Spring的使用是必备技能,面试中可能会问到IoC容器、AOP(面向切面编程)、事务管理、Spring Boot、Spring Cloud等相关知识。 8. **数据库**:SQL查询语言、索引、事务、存储...
1. Spring的核心组件:IoC容器、AOP、Bean管理。 2. Spring MVC:控制器、模型、视图解析、拦截器。 3. Spring Boot:自动配置、起步依赖、健康检查。 4. Spring Data JPA:持久层操作,与ORM框架的集成。 八、...
- **依赖注入**:掌握Spring IoC容器的基本使用方法,了解Bean的生命周期管理。 - **AOP应用**:深入理解面向切面编程的概念,学会定义切入点、通知类型,并能在实际项目中灵活运用。 ### 5. OSGi **知识点解析:*...
在本系统中,Spring主要负责依赖注入(Dependency Injection,DI),通过Bean容器管理对象的生命周期和依赖关系,使得代码松耦合,易于测试和维护。 2. **SpringMVC**:SpringMVC是Spring框架的一个模块,主要用于...
首先,SSM框架是Java Web开发中的常用技术栈,它由Spring框架提供IoC(Inversion of Control)容器和AOP(Aspect Oriented Programming)支持,SpringMVC负责处理HTTP请求和响应,而MyBatis则作为持久层框架,简化了...
11. **IOC容器**:理解其工作原理及注入方式。 12. **数据库优化**:熟悉常用的数据库(如Oracle),并了解如何进行查询优化。 #### 面试技巧与注意事项 - 在面试前,通过网络资源查找并复习相关知识点。 - 定期...
4. **集合框架**:详述ArrayList、LinkedList、HashMap、HashSet等常用集合类的使用,以及泛型、迭代器、并发容器(如ConcurrentHashMap)等进阶话题。 5. **多线程编程**:讲解线程的基本概念、创建方式、同步机制...
41. **依赖注入(DI)**:理解DI的概念,使用IoC容器如Autofac或Unity实现。 42. **微服务架构**:了解微服务设计原则,构建松耦合的服务。 43. **性能优化**:分析和优化代码性能,如使用Profiler工具。 44. **...
SSM是Java Web开发中常用的一站式解决方案,由Spring、SpringMVC和MyBatis三个组件构成。Spring作为核心容器,负责管理对象和依赖注入;SpringMVC处理HTTP请求,提供了模型-视图-控制器的设计模式;MyBatis则作为...
1. **Spring IOC容器**:理解依赖注入的概念及其初始化过程。 2. **BeanFactory** 与 **ApplicationContext** 的区别。 3. **Spring Bean生命周期**:了解Bean从创建到销毁的过程。 4. **Spring AOP**:面向切面编程...
- **IoC 定义**:Inversion of Control(控制反转)是一种设计思想,其核心在于将对象的控制权交由外部容器管理。 - **实现方式**: - **依赖注入**(Dependency Injection, DI):通过构造函数、setter 方法或方法...