首页 新闻 会员 周边

关于ef性能的问题

0
[已关闭问题] 解决于 2014-08-08 13:57

今天做了一个ef 100万条数据的插入 ,居然发现 插到3000条左右的时候 居然要0.7秒才能插入一条数据 ,这也太坑了把 ,是我写法有问题吗 ,而同样的用ado.net 插入一条 耗时 0.004秒,并且不会出现因为插入的条数越多 时间变长的,

ef开始几百条以前很快 ,随着条数递增会耗时越来越长 ,这是怎么回事 ?是我的代码有问题嘛?我用的ef的datafirst  

 1  using (NPU_TemporaryEntities db = new NPU_TemporaryEntities())
 2                 {
 3 
 4                     for (int i = 0; i < 1000000; i++)
 5                     {
 6                         Temp temp = new Temp();
 7                         DateTime starTime = DateTime.Now;
 8                         db.Bibliography.Add(temp.Bibliographies);
 9                         db.SaveChanges();
10                         DateTime endTime = DateTime.Now;
11                         Console.Write("正在执行第 " + i + " 条数据插入,耗时 " + (starTime - endTime) + "\r\n");
12                     }
13                 }
for (int i = 0; i < 1000000; i++)
                {
                    Temp temp = new Temp();
                    DateTime starTime = DateTime.Now;
                    db.Insert(temp.Bibliographies);
                    DateTime endTime = DateTime.Now;
                    Console.Write("正在执行第 " + i + " 条数据插入,耗时 " + (starTime - endTime) + "\r\n");
                }
keeppuching的主页 keeppuching | 初学一级 | 园豆:6
提问于:2014-07-15 11:45
< >
分享
其他回答(4)
0

就是这样,没问题.

Launcher | 园豆:45045 (高人七级) | 2014-07-15 11:50

生成的同一条语句呀 怎么会越来越慢 为什么呢?他做了其他什么操作

支持(0) 反对(0) keeppuching | 园豆:6 (初学一级) | 2014-07-15 13:23

@keeppuching: 你读下 SaveChanges 的源码就知道了。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-07-15 13:30
0

关于性能问题,就象有人希望汽车,要象美国车一样又安全又耐操....然后还省油。

找个女朋友,出门象千颂依,在家象大长今,花钱堪称环保。

为什么不想想亚里士多德的逻辑学呢?

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-07-15 12:07
0

这是没法测试出ef的性能,一条一条的插入数据,就是ado.net纯sql插入,也是比较慢的

秋壶冰月 | 园豆:5903 (大侠五级) | 2014-07-15 20:15
0

把 savechange方法 提到 for 外面 ,每次新增的实例,只修改在上下文中的状态为 added,类似于批量插入。可以试试 差距

Zery | 园豆:6151 (大侠五级) | 2014-07-15 22:44
0
zucker1988 | 园豆:586 (小虾三级) | 2014-07-16 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册