简评: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. ubuntu 源码安装 lnmp 环境

    准备篇 下载软件包 1.下载nginx http://nginx.org/download/nginx-1.2.0.tar.gz 2.下载pcre  (支持nginx伪静态) ftp://ftp.cs ...

  2. 解剖Nginx·模块开发篇(5)解读内置非默认模块 ngx_http_stub_status_module

    1 Background ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的 ...

  3. MySQL 基础常用命令

    一.启动与关闭 1.1 Linux下启动mysql 的命令: a. rpm包安装:service mysqld start b. 源码包安装:/usr/local/mysql/bin/mysqld_s ...

  4. SpringBoot Actuator & SpringBoot Admin

    SpringBoot Actuator提供了很多监控和管理你的spring boot应用的HTTP或者JMX端点,并且你可以有选择地开启和关闭部分功能. 当你的spring boot应用中引入依赖之后 ...

  5. CTE 中字符串拼接

    1>cte语法 1.1>基础语句和递归语句中必须有字段 1.2>最后只能跟一条查询语句 1.3>字符串拼接,要将拼接的字段转成字符串类型,cast(fieldName as n ...

  6. Partial Functions(偏函数)

    如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...

  7. jstack调试core文件

    摘自:https://stackoverflow.com/questions/37331266/jstack-throws-exception-interrogating-a-core // 错误示例 ...

  8. 安装CentOS 6.4 64 位操作系统

    1.安装 CentOS 6.4 64位操作系统的一些困境: 1.1 CentOS 6.4 64位操作系统的ISO文件有4G多,通过U盘安装的方式已经不可取(FAT32 只支持最大4G文件); 1.2 ...

  9. 给你的LINUX程序加个文字画LOGO

    经常看到很多的程序尤其LINUX程序有文字对应的那种LOGO,好酷炫啊. 研究了好久试了各种方法,后来在GOOGLE中搜索到一个软件叫:figlet 下载地址:http://www.figlet.or ...

  10. yii2项目实战-路由美化以及如何正确的生成链接

    yii2项目实战-路由美化以及如何正确的生成链接 更新于 2016年12月17日 by 白狼 被浏览了 705 次 美化路由 何为美化路由呢?美化嘛,无外乎就是给路由化化妆,让她好看点.我虽没化过妆, ...