在执行效率上,linq to sql和存储过程差距有多大?在哪些情况下,linq to sql效率会降低?
实践出真理,勿人云亦云。
实际上ORM的性能影响只是在SQL语句生成上,之所以很多人(包括我)觉得ORM框架性能差,是因为没能力去控制ORM生成SQL语句.
恩,应该是的。那执行效率上linq to sql对效率影响有多大,和存储过程相比相差的多少?毫秒级?秒级?
@水石相生:
linq tosql生成的SQL语句跟存储过程唯一区别在于,存储过程少了语法书解析这个过程
而且我记得只要第二次执行同一个语句时也一样会被缓存.也就是说在SQL执行上是不能有区别的,因为到了sql执行就都到数据库跟你手写sql还是生成sql都没有关系.主要还是生成sql的这个过程会消耗一些性能,但是这种消耗基本上对项目不会产生影响的
@吴瑞祥: 计划项目是用linq,谢谢你的回答。
这种相差不超过1毫秒
计划项目是用linq,谢谢你的回答。
性能差异的测试通常是这样的,
同样一件事,执行10000次或是更多,然后得出结论
A:执行1万次,需要2秒。
B:执行1万次,需要10秒。
从这儿看,两者的性能差是很大的,5倍啊。
可是大部份的开发场境是只需要执行一次的,也就是说
使用A技术,需要0.0002秒,使用B技术,需要0.001秒。
可是边际成本是0.3秒
两种技术下:
A:用户的成本是0.3+0.0002秒
B:用户的成本是0.3+0.001秒
你说需要计较吗?
计划项目中用linq,谢谢你的回答。
一般而言,你可以认为linq to sql的效率是原生sql的效率的90%-95%,如何取舍就看你自己了。另外在linq to sql里面也仍然可以调用存储过程的(存储过程会映射成一个方法),这个并不矛盾。复杂的,需要效率优化的你仍然可以用存储过程,然后一般的增删改查和业务逻辑可以直接用linq to sql。不存在非黑即白的情况。换句话说,不存在用了linq to sql就不能用存储过程或者原生sql语句的情况。
计划项目是用linq,谢谢你的回答。