简评:SQLite 官方出品。

C是最好的选择

从 2000 年 5 月 29 日开始,SQLite 就选择了 C 语言。直到今天,C 也是实现 SQLite 这样软件库的最佳语言。

C语言是实现 SQLite 最好的语言的原因包括:

  1. 性能。
  2. 兼容性。
  3. 低依赖性。
  4. 稳定性。

性能

像 SQLite 这样被密集使用的基础库需要有很好的性能(SQLite 确实很快,可以看看 Internal Versus External BLOBs 和 35% Faster Than The Filesystem 两篇文章)。

C语言很适合写这样有性能要求的程序。C 语言有时被称为「便携式汇编语言」,让开发者能尽可能的接近底层硬件编码,同时保证跨平台的便携性。

当然,也有其他的编程语言声称和 C 一样快或者更快,但没有一个能和 C 一样通用。

兼容性

目前几乎所有的系统都可以调用由 C 语言编写的库。

比如,用 Java 编写的 Android 应用能通过 adapter 来使用 SQLite。如果 SQLite 是用 Java 编写的,这对于 Android 肯定会更方便。但在 iPhone 上应用是 Objective-C 或者 Swift 编写的,这两种语言都没办法调用 Java 库。因此,如果 SQLite 选择用 Java 编写,那在 iPhone 上就没办法用了。

低依赖性

用 C 来编写库不会在运行时有太多的依赖。在最小的配置下,SQLite 只需要 C 标准库里的:

  1. memcmp()
  2. memcpy()
  3. memmove()
  4. memset()
  5. strcmp()
  6. strlen()
  7. strncmp()

在更复杂的配置下,SQLite 可能还会用到 malloc(),free() 和一些操作系统接口来打开、读取、写入和关闭文件。但即使这样,依赖的数量也非常小。

稳定性

这个稳定性是指语言的稳定性。C 语言可能是老旧又无聊,但却正好很适合开发像 SQLite 这样更注重长期稳定的模块。

原文:Why Is SQLite Coded In C

为什么 SQLite 用 C 编写?的更多相关文章

  1. 桌面轻量级数据库的选择:Access、SQLite、自己编写?

    1. Access我们做小项目的时候特别是小的MIS系统一般也都要用数据库来保存数据.经观察大部分的小系统都是用Access数据库,有的系统为了掩盖数据库的类型,把数据文件后缀名改了,其实只要改回到m ...

  2. 学习SQLite之路(一)

    工作快一年了,接触的东西不是很多,学到的东西也不多.无意中看到公司的代码有一点关于sqlite3的(不是我这一层负责的代码),于是乎就学学试试. 参考: http://www.runoob.com/s ...

  3. C#中使用SQLite数据库简介(上)

    [SQLite数据库] SQLite是一个开源的轻量级的桌面型数据库,它将几乎所有数据库要素(包括定义.表.索引和数据本身)都保存在一个单一的文件中.SQLite用C编写实现,它在内存消耗.文件体积. ...

  4. Visual Studio下SQLite数据库开发环境设置

    由于我们介绍的内容都是基于微软的Visual Studio下开发的Win32平台,所以下边我们介绍Visual Studio下SQLite数据库开发环境设置.具体而言我们有两种方式可以在Visual ...

  5. sqlite详细介绍

    ------------------------------------------------------------------------------SQLite简介-------------- ...

  6. SQLite:自学笔记(1)——快速入门

    SQLite的安装和入门 了解 啥是SQLite? SQLite是一种轻巧迷你的关系型数据库管理系统.它的特点如下: 不需要一个单独的服务器进程或操作的系统(无服务器的). SQLite 不需要配置, ...

  7. 轻量级数据库Sqlite的使用

    SqLite是什么? SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置. 就像 ...

  8. SQLite数据库 简介、特点、优势、局限性及使用

    SQLite简介 SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足.无服务器.零配置的.事务性的SQL数据库引擎.它是一个零配置的数据库,这就体现出来SQLite与 ...

  9. SQLite EF Core Database Provider

    原文链接 This database provider allows Entity Framework Core to be used with SQLite. The provider is mai ...

随机推荐

  1. Android开发实战之底部Dialog弹出效果

    在Android开发中,有很多情况下我们需要使用到对话框,遗憾的是,安卓自带的对话框样式不能满足我们实际的需要,所以往往需要我们自定义对话框,具体做法:写一个对话框继承自Dialog实现他的一个构造方 ...

  2. 空值和null区别

    空值代表杯子是真空的,NULL代表杯子中装满了空气

  3. Excel 常用快捷键

    Excel 常用快捷键 1. 移动整列 使用Shift快捷键可以快速移动整列:选中该列,当鼠标变成十字箭头时,按住Shift键,然后将该列移动到想要的位置. 2 绝对引用 使用F4快捷键可以快速设置绝 ...

  4. 前台的json数组转化为List<T>集合

    using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;u ...

  5. 3.3.4深度剖析ConcurrentLinkedQueue

    队列.链表之类的数据结构及其常用.Java中,ArrayList和Vector都是使用数组作为其内部实现.两者最大的不同在于:Vector是线程安全的,而ArrayList不是.此外LinkedLis ...

  6. [operator]ELK6 index pattern的问题

    完成了EL/FK的搭建之后,在kibana的主页只能看到默认的索引? 其实这个索引名字的设置是在logstash-smaple.conf(elk6.4)里的设置,比如我这样设置 input { bea ...

  7. 敏捷软件开发:原则、模式与实践——第13章 写给C#程序员的UML概述

    第13章 写给C#程序员的UML概述 UML包含3类主要的图示.静态图(static diagram)描述了类.对象.数据结构以及它们之间的关系,藉此表现出了软件元素间那些不变的逻辑结构.动态图(dy ...

  8. jQuery Mobile的使用方法

    安装:  <link rel="stylesheet" href="下载到本地的文件目录.min.css" media="screen" ...

  9. Linq善解人意之通过MSDN对14个“查询关键字“逐个解剖

    linq中存在的 14个关键字 网址: https://msdn.microsoft.com/zh-cn/library/bb310804.aspx from: 迭代变量 where:对数据源进行逻辑 ...

  10. scvmm2008 错误 2941 0x80072efe

    该错误是由于vmm和主机之间的证书不匹配所导致的. 1. 运行mmc,文件=>添加管理单元=>添加证书=>计算机账户=>本地计算机. 2. 在下图各个目录证书下删除和vmm关联 ...