WP8 SqlCE和SqlLite数据存储性能比较
在平时的开发中一定会用到本地数据存储,除了独立存储外我们还可以选择SqlCE和SqlLite;于是在选择上我们就必须权衡他们两者的性能择优选择.
测试代码:(这个例子是在msdn sqllite例子上面修改的,测试页面在CustomerEditView.xaml.cs 大家可以点击首页add按钮进入)
主要代码:
//测试插入数据性能
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
int num = int.Parse(txtNum.Text);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = ; i < num; i++)
{
CustomerViewModel cvm = new CustomerViewModel { Name = "张三" + i.ToString(), City = "城市" + i.ToString(), Contact = "" + i.ToString() };
await CustomersViewModel.GetDefault().InsertItemAsync(cvm);
}
sw.Stop();
tbTime.Text = sw.ElapsedMilliseconds.ToString();
ShowMemory();
}
//测试查询数据性能
private async void Button_Click_2(object sender, RoutedEventArgs e)
{
Stopwatch sw = new Stopwatch();
sw.Start();
//await CustomersViewModel.GetDefault().GetItemAsync(950);//查询一个数据
await CustomersViewModel.GetDefault().GetAllItems();
sw.Stop();
tbTime.Text = sw.ElapsedMilliseconds.ToString();
ShowMemory();
}
//sqlce插入数据
private void Button_Click_3(object sender, RoutedEventArgs e)
{
int num = int.Parse(txtNum.Text);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = ; i < num; i++)
{
Customer cvm = new Customer { Name = "张三" + i.ToString(), City = "城市" + i.ToString(), Contact = "" + i.ToString() };
App.SqlCEDataBase.Customers.InsertOnSubmit(cvm);
}
App.SqlCEDataBase.SubmitChanges();
sw.Stop();
tbTime.Text = sw.ElapsedMilliseconds.ToString();
ShowMemory();
}
//sqlce查询数据
private void Button_Click_4(object sender, RoutedEventArgs e)
{
Stopwatch sw = new Stopwatch();
sw.Start();
//await CustomersViewModel.GetDefault().GetItemAsync(950);//查询一个数据
var cs = from c in App.SqlCEDataBase.Customers
select c;
int s = cs.Count();
sw.Stop();
tbTime.Text = sw.ElapsedMilliseconds.ToString();
ShowMemory();
}
private void ShowMemory()
{
string total = "DeviceTotalMemory";
string current = "ApplicationCurrentMemoryUsage";
string peak = "ApplicationPeakMemoryUsage";
long totalBytes = (long)DeviceExtendedProperties.GetValue(total);
long currentBytes = (long)DeviceExtendedProperties.GetValue(current);
long peakBytes = (long)DeviceExtendedProperties.GetValue(peak);
PageTitle.Text = "设备总内存:" + totalBytes.ToString() + "当前应用:" + currentBytes.ToString() + "当前应用最高:" + peakBytes.ToString();
}
先来说说他们各自的优缺点,欢迎大家补充:
sqlce:支持linq to sql
sqllite:跨平台,操作和之前和sql差不多,感觉灵活性高。
接下来我们就从速度和内存两方面比较下他们的性能:(测试机920)
通过测试发现在内存上面几乎没有什么差别,但是在速度上面sqlce性能远大于sqllite。
上面只是测试了1000左右的数据,记得以前一个项目中有10000多数据需要一次性写入,发现好像用来15分钟左右,后面直接放弃了。
所以我感觉我们如果没有什么特殊的要求还是用sqlce比较好。但是网上搜索到的例子都是建议使用sqllite,真不知道他们是出于什么理由。上面只是抛砖引玉希望大家多提供宝贵意见,多提供实际开发经验。
WP8 SqlCE和SqlLite数据存储性能比较的更多相关文章
- 性能优化之数据存储&DOM编程
多读书多看报 数据存储 ·在javascript中,数据存储的位置会对代码整体性能产生重大的影响. ·数据存储共有4种方式:字面量.变量.数组.对象成员. ·要理解变量的访问速度,就要理解作用域. ...
- TI C6000 数据存储处理与性能优化
存储器之于CPU好比仓库之于车间.车间加工过程中的原材料.半成品.成品等均需入出仓库,生产效率再快,如果仓库周转不善,也必然造成生产阻塞.如同仓库需要合理地规划管理一般,数据存储也需要恰当的处理技巧来 ...
- 探索etcd,Zookeeper和Consul一致键值数据存储的性能
这篇博文是探索三个分布式.一致性键值数据存储软件性能的系列文章中的第一篇:etcd.Zookeeper和Consul,由etcd团队所写,可以让我们全面地了解如何评估三个分布式一致存储软件的性能.翻译 ...
- wp8.1 Study10:APP数据存储
一.理论 1.App的各种数据在WP哪里的? 下图很好介绍了这个问题.有InstalltionFolder, knownFolder, SD Card... 2.一个App的数据存储概览 主要分两大部 ...
- IOS数据存储之Sqlite数据库
前言: 之前学习了数据存储的NSUserDefaults,归档和解档,沙盒文件存储,但是对于数据量比较大,需要频繁查询,删除,更新等操作的时候无论从效率上还是性能上,上述三种明显不能满足我们的日常开发 ...
- Android实现数据存储技术
转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...
- Android的数据存储方式(转)
数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 ...
- Android数据存储的五种方法汇总
本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 ...
- Kooboo CMS技术文档之三:切换数据存储方式
切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...
随机推荐
- 大家一起写mvc(一)
关于java的mvc框架层出不穷,可能大家都会用,但是具体的原理知道不知道呢.所以我想写一个写一个简单mvc的系列博客,主要面向想了解这些原理的. 其实所谓的mvc框架,基本都是一个原理,就是配置一个 ...
- 在线测试 ssl 安全性
记录下, https://www.ssllabs.com/index.html
- Android之把手机的3g流量共享出来让其他人连接这个wifi
转自:http://blog.csdn.net/luoboo525/article/details/7883998 亲测可用 用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi ...
- mysql导入数据出错
今天准备移动网站到另外一个服务器,用的是mysql数据库,导出的时候正常,导入的时候出现了一个错误,纠结了半天 最后打开sql文件发现导出的sql确实有问题 具体什么原因不清楚,只好把以前备份的sql ...
- JAVA B/S系统实现客户端屏幕截图,Java版的QQ截图
简介:本方法首先需要抓到屏幕的整个图象,将图象显示在一个JFrame中,再将JFrame全屏显示,这样就模拟出了一个桌面,Java也就可以获得鼠标的作用区域从而实现桌面中的小范围截屏.Java实现QQ ...
- Android中解决图像解码导致的OOM问题
Android中解决图像解码导致的OOM问题 原文链接:http://blog.csdn.net/zjl5211314/article/details/7042017
- Lotus开发之Lotus Notes中域的验证
一:介绍 Lotus中的域主要有以下的类型:文本,日期/时间,对话框列表,复选框,单选按钮,RTF等等.Lotus中域的验证方式有很多种公式,lotusscript,javascript等 ...
- View 以Diaglog 方式展示
OutAdmissionBookingEditor admissionBookingEditor = this.LayoutManager.OpenDialog<OutAdmissionBook ...
- BZOJ 4726: [POI2017]Sabota? 树形dp
4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...
- .net微信公众号开发——模板消息
作者:王先荣 本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介:(2)设置所属行业:(3)获得模板id:(4)发送模板消息:(5)接收推送模板消息发送结果 ...