SQLite.NET.0.17 的离奇之处, BUG??? BY DESIGN??
生活随笔
收集整理的這篇文章主要介紹了
SQLite.NET.0.17 的离奇之处, BUG??? BY DESIGN??
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
看了靈感之源 的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();
?
當(dāng)我把這里第一和最后一行注釋掉后,結(jié)果讓我無法理解
with transaction:
Inserting... 17127 inserts/sec
Reading... 47101 reads/sec
without transaction:
Inserting... 624 inserts/sec
Reading... 43041 reads/sec
另外,這個版本只是把pinvoke用C#調(diào)了,并沒有改成pure .net 的項目,他還是依賴sqlite.dll的。
(我在.net 2.0下測試,不知道1.1 是不是一樣)
在壓縮包里,帶了一個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();
?
當(dāng)我把這里第一和最后一行注釋掉后,結(jié)果讓我無法理解
with transaction:
Inserting... 17127 inserts/sec
Reading... 47101 reads/sec
without transaction:
Inserting... 624 inserts/sec
Reading... 43041 reads/sec
另外,這個版本只是把pinvoke用C#調(diào)了,并沒有改成pure .net 的項目,他還是依賴sqlite.dll的。
(我在.net 2.0下測試,不知道1.1 是不是一樣)
轉(zhuǎn)載于:https://www.cnblogs.com/csujun/archive/2004/06/26/18729.html
總結(jié)
以上是生活随笔為你收集整理的SQLite.NET.0.17 的离奇之处, BUG??? BY DESIGN??的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kotlin学习笔记(3)- 语法
- 下一篇: 今天MBA报到注册