BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SQLite移植到了.NET

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 王瑜珩 关注 0 他的粉丝 发布于 2009年8月10日. 估计阅读时间: 2 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Noah Hart将SQLite3移植到了C#上。虽然此次移植版本比原始版本要慢,但是此项目可以让.NET托管项目在不使用任何P/Invoke和不安全代码的情况下使用SQLite。

C#-SQLite被寄放在Google Code上,是从SQLite 3.6.16到C#的完全移植,代码版权使用MIT License。C#-SQLite通过了超过3万个测试用例,只有9个没有通过。编译好的二进制exe文件只有528KB,和原始版本的506KB差不多。性能方面要比原始的C版本差一些,但是Hart说他还没有对代码做任何性能优化,而且他认为目前的性能还可以接受。所有的数据单位都是行/秒:

Test C#-SQLite SQLite
Insert 300K 1300K
Select 1500K 8450K
Update 60K 300K
Delete 250K 700K

Cory Nelson解释了为什么移植SQLite要比其它方式更好:避免P/Invoke带来的“速度超慢和无法移植”问题。而且C代码“充斥着goto语句,会使优化变得十分困难”。

很多产品-如Adobe AIR-都包含和使用了SQLite。或许C#-SQLite最能发挥的地方是Silverlight项目,Tim Anderson指出

可以在微软Silverlight中作为本地数据库使用,保存在isolated storage中。

……Silverlight不允许P/Invoke和不安全代码,由于原始版本的SQLite中使用了大量的指针,即使只有很少的P/Invoke,不安全的代码却一定有很多。

虽然Silverlight是实现在.NET Framework上的,却不包含System.Data命名空间,但包含了System.Linq。

C#-SQLite并不是SQLite的官方版本,Hart也与SQLite.org没有任何关系。SQLite的创造者和商标所有人Richard Hipp,在一开始并不同意将“SQLite”包含在项目名中,但是后来同意使用C#-SQLite。

除了这个项目,还有其它一些托管数据库,比如:Perstdb4oSilverlight DatabaseSystem.Data.SQLite

查看英文原文:SQLite Has Been Ported to .NET

 

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

我还不知道什么是SQL lite? by Liu Xing

我还不知道什么是SQL lite?

Noah Hart 自己也说了,这只能说是用C#模拟C版SQLite,而不是移植 by He YuanHui

Noah Hart 自己也说了,这只能说是用C#模拟C版SQLite,而不是移植。
不过这的确是个很不错的项目,包括作者把C转换为C#的方法,和在很多不能使用非托管代码的地方使用C#-SQLite的可能性。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT