linq to entity 与 entity sql 性能
一个是用linq to entity写的
一个是entity sql写的
性能杂差别老大呢
linq to entity
100000
00:00:00.8281250
基本在0.8-1之间
entity sql
100000
00:00:00.3593750
基本在0.3-0.5之间
都是加载10W条数据
linq?to?entitysql
IEnumerable<HanModel.Models.ViewModel.Fs_NewsOrClass> query = (
db.fs_news.OrderByDescending(fn => fn.Click).Join(
db.fs_news_Class, fn => fn.ClassID, fc => fc.ClassID, (fn, fc) =>
new HanModel.Models.ViewModel.Fs_NewsOrClass
{
newsid = fn.Id,
newsTitle = fn.NewsTitle,
class_ename = fc.ClassEName,
class_type = fc.Type_New
})).Take(100000).ToList();
return query;
===============================================================
string sql = "select top 100000 fn.id,fn.newstitle,fc.classename,fc.type_new from fs_news as fn inner join fs_news_class as fc on fn.classid=fc.classid order by fn.click desc";
var cmd = db.Database.Connection.CreateCommand();
db.Database.Connection.Open();
cmd.CommandText = sql;
List<HanModel.Models.ViewModel.Fs_NewsOrClass> fslist = new List<HanModel.Models.ViewModel.Fs_NewsOrClass>();
using (var reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))
{
while (reader.Read())
{
HanModel.Models.ViewModel.Fs_NewsOrClass fs = new HanModel.Models.ViewModel.Fs_NewsOrClass();
fs.newsid = Convert.ToInt32(reader["id"]);
fs.newsTitle = reader["newstitle"].ToString();
fs.class_ename = reader["classename"].ToString();
fs.class_type = reader["type_new"].ToString();
fslist.Add(fs);
}
reader.Close();
}
db.Database.Connection.Close();
return fslist;
[解决办法]
想快? 干吗不用PLINQ
昨天看了一老外的文章,他在文中提出这样一个理论: 现在的程序员根本就在浪费CPU,还处在只用单核CPU的代码思想中,殊不知现在很多客房端早已经进入了多核时代,未来多核也必是一个趋势,所以:
程序员们,尽可能多的在代码中"消费"你的客户端的硬件吧!
[解决办法]
这里有分析
http://hi.baidu.com/honfei/item/f4704157dbd75e948c12edac