SqlCE与SQLite 性能测试

最近做快递项目,用到了PDA WinCe的系统 采用先本地保存 再进行上传的模式

但是客户提出了一个问题:操作慢

一直没有管 就这样一直运行着  就是最近 客户拿了一把新枪让我们开发

说我们的PDA设置不行 反应到领导那 决定找下原因

后来通过增加几个时间点 发现一个问题 扫描用时是60ms 插入一条数据600ms  然后再从数据库中查询出来显示到界面上用时900ms

 

比较可怕 用的SQLCe数据库

 

后来通过网上查阅 SQLite性能要高点  亲测 确实如果 测试代码如下

 

支行结果

单条插入SQLCE    170545ms

单条插入SQLite      22596ms

事务插入SQLCE        9272ms

事务插入SQLite          151ms

读取SQLCE              7544ms

读取SQLite              3384ms

 

 

无论从读取速度还是从插入速度上,SQLite都比SQLCE快很多 尤其是在事务方面

 

 DatabaseCE ce = new DatabaseCE();
            DatabaseSQLite lite = new DatabaseSQLite();
            int start = 0;
            int end = 0;
            int countCE = 0;
            int countLite = 0;
            string[] sqlTransCE = new string[1000];
            for (int i = 0; i < 1000; i++)//插入1000条数据到SQLCE中
            {
                string sqlInsert = "insert into TMsg(FromUserNo,ToUserNo,SendTime,MsgType,MsgContent,MsgStatus,SendTag,MsgUserName,AddUserNo,AddTime)"
                    + " values(" + i + "," + i + ",getdate(),0,'第" + i + "条',0,0,'User" + i + "',0,getdate())";
                sqlTransCE[i] = sqlInsert;
                start = Environment.TickCount;
                ce.ExecuteSQL(sqlInsert);
                end = Environment.TickCount;
                countCE += (end - start);
            }
            lbCE.Text = countCE + "ms";
            Application.DoEvents();

            string[] sqlTransLite = new string[1000];
            for (int i = 0; i < 1000; i++)//插入1000条数据到SQLite中
            {
                string sqlInsert = "insert into TMsg(FromUserNo,ToUserNo,SendTime,MsgType,MsgContent,MsgStatus,SendTag,MsgUserName,AddUserNo,AddTime)"
                    + " values(" + i + "," + i + ",'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "',0,'第" + i + "条',0,0,'User" + i + "',0,'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')";
                sqlTransLite[i] = sqlInsert;
                start = Environment.TickCount;
                lite.ExcuteSql(sqlInsert);
                end = Environment.TickCount;
                countLite += (end - start);
            }

            lbLite.Text = countLite + "ms";
            Application.DoEvents();

            start = Environment.TickCount;
            ce.ExecuteSQL(sqlTransCE);//事务插入1000条数据到SQLCE中
            end = Environment.TickCount;

            lbCET.Text=(end-start).ToString();
            Application.DoEvents();

            start = Environment.TickCount;
            lite.ExecuteSQL(sqlTransCE);//事务插入1000条数据到SQLite中
            end = Environment.TickCount;


            lbLiteT.Text = (end - start).ToString();
            Application.DoEvents();

            string sql = "Select * from TMsg where MsgStatus=0";
            start = Environment.TickCount;
            DataTable dt = ce.GetDataTable(sql);//从SQLCE中读取1000条数据
            end = Environment.TickCount;
            lbCEQ.Text = (end - start).ToString();
            Application.DoEvents();

            start = Environment.TickCount;
            DataTable dtLite = lite.GetDataTable(sql);//从SQLite中读取1000条数据
            end = Environment.TickCount;

            lbLiteQ.Text = (end - start).ToString();

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值