SQLite.NET.0.17 的离奇之处, BUG??? BY DESIGN??

看了灵感之源 的blog, 我也下了看了下。碰到个离奇的事情,没有transaction的情况下比有要慢上好多倍。
在压缩包里,带了一个test的项目,里面几行是这样的,
 IDbTransaction trans = conn.BeginTransaction();
 for (int i = 0; i < count; ++i)
 {
  ((IDataParameter) cmd.Parameters[0]).Value = "AaBbCc123";
  if (i % 20 != 0)
   ((IDataParameter) cmd.Parameters[1]).Value = i;
  else
   ((IDataParameter) cmd.Parameters[1]).Value = null;
  ((IDataParameter) cmd.Parameters[2]).Value = (i * 3.3).ToString();
  ((IDataParameter) cmd.Parameters[3]).Value = (Single) (i * 4.4);
  cmd.ExecuteNonQuery();
 }
 trans.Commit();
 
当我把这里第一和最后一行注释掉后,结果让我无法理解
with transaction:
Inserting... 17127 inserts/sec
Reading... 47101 reads/sec

without transaction:
Inserting... 624 inserts/sec
Reading... 43041 reads/sec

另外,这个版本只是把pinvoke用C#调了,并没有改成pure .net 的项目,他还是依赖sqlite.dll的。


(我在.net 2.0下测试,不知道1.1 是不是一样)

posted on 2004-06-26 00:21  dgdh  阅读(2697)  评论(8编辑  收藏  举报

导航