在平时的开发中一定会用到本地数据存储,除了独立存储外我们还可以选择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数据存储性能比较的更多相关文章

  1. 性能优化之数据存储&DOM编程

    多读书多看报 数据存储 ·在javascript中,数据存储的位置会对代码整体性能产生重大的影响. ·数据存储共有4种方式:字面量.变量.数组.对象成员.   ·要理解变量的访问速度,就要理解作用域. ...

  2. TI C6000 数据存储处理与性能优化

    存储器之于CPU好比仓库之于车间.车间加工过程中的原材料.半成品.成品等均需入出仓库,生产效率再快,如果仓库周转不善,也必然造成生产阻塞.如同仓库需要合理地规划管理一般,数据存储也需要恰当的处理技巧来 ...

  3. 探索etcd,Zookeeper和Consul一致键值数据存储的性能

    这篇博文是探索三个分布式.一致性键值数据存储软件性能的系列文章中的第一篇:etcd.Zookeeper和Consul,由etcd团队所写,可以让我们全面地了解如何评估三个分布式一致存储软件的性能.翻译 ...

  4. wp8.1 Study10:APP数据存储

    一.理论 1.App的各种数据在WP哪里的? 下图很好介绍了这个问题.有InstalltionFolder, knownFolder, SD Card... 2.一个App的数据存储概览 主要分两大部 ...

  5. IOS数据存储之Sqlite数据库

    前言: 之前学习了数据存储的NSUserDefaults,归档和解档,沙盒文件存储,但是对于数据量比较大,需要频繁查询,删除,更新等操作的时候无论从效率上还是性能上,上述三种明显不能满足我们的日常开发 ...

  6. Android实现数据存储技术

    转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...

  7. Android的数据存储方式(转)

    数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 ...

  8. Android数据存储的五种方法汇总

    本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 ...

  9. Kooboo CMS技术文档之三:切换数据存储方式

    切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...

随机推荐

  1. python find函数

    Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1 ...

  2. php 3种常见设计模式

    1.工厂模式 <?php namespace Facebab; class Factory { static function createDatabase () { return new Da ...

  3. Android图片处理-图片压缩处理

    这里先重复温习一下上一篇,调用相册获取图片: /*** * 这个是调用android内置的intent,来过滤图片文件 ,同时也可以过滤其他的 */ Intent intent = new Inten ...

  4. [推荐]DataX、DbSync和Timetunnel学习贴

    [推荐]DataX.DbSync和Timetunnel学习贴 一 DataX 二 DbSync 三  Timetunnel TimeTunnel :http://code.taobao.org/p/T ...

  5. 用非管理员权限启动主程序,并用管理员权限启动子程序,导致WM_COPYDATA消息发送失败的问题

    问题描述 :     用非管理员权限启动dzh,dzh再启动dtssm,由于dtssm的配置文件app.manifest 中设置了requireAdministrator,导致dtssm总是以管理员权 ...

  6. 传递给数据库 'master' 中的日志扫描操作的日志扫描号无效

    错误:连接数据库的时候提示:SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 C:\Documents and Settings\Administrator>" ...

  7. 导出特定内容成insert语句

           )                                EXEC('SELECT ' + @insert_sql + ' FROM ' + @table  )

  8. Lucene 4.X 倒排索引原理与实现: (1) 词典的设计

    词典的格式设计 词典中所保存的信息主要是三部分: Term字符串 Term的统计信息,比如文档频率(Document Frequency) 倒排表的位置信息 其中Term字符串如何保存是一个很大的问题 ...

  9. Redis安装及HA(High Availability)配置

    Redis是一种内存数据库,以KEY-VALUE(即键值对)的形式存储数据.这篇文章主要介绍的是Redis安装及配置,所以不对Redis本身作详细介绍了. 下载: http://redis.io/do ...

  10. iOS:个性化UITextView(缩进,行距,铺满)

    总体来说个性化定制UITextView中的内容有两种方法: 1,从文件中读取内容到UITextView,这个个人感觉使用rtfd和rtf格式文件效果非常好. 2,使用NSAttributeString ...