资讯专栏INFORMATION COLUMN

为什么 SQLite 用 C 编写?

OBKoro1 / 1672人阅读

摘要:兼容性目前几乎所有的系统都可以调用由语言编写的库。比如,用编写的应用能通过来使用。如果是用编写的,这对于肯定会更方便。低依赖性用来编写库不会在运行时有太多的依赖。

简评:SQLite 官方出品。

C是最好的选择

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

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

性能。

兼容性。

低依赖性。

稳定性。

性能

像 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 标准库里的:

memcmp()

memcpy()

memmove()

memset()

strcmp()

strlen()

strncmp()

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

稳定性

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

原文:Why Is SQLite Coded In C

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110800.html

相关文章

  • 什么 SQLite C 编写

    摘要:兼容性目前几乎所有的系统都可以调用由语言编写的库。比如,用编写的应用能通过来使用。如果是用编写的,这对于肯定会更方便。低依赖性用来编写库不会在运行时有太多的依赖。 简评:SQLite 官方出品。 C是最好的选择 从 2000 年 5 月 29 日开始,SQLite 就选择了 C 语言。直到今天,C 也是实现 SQLite 这样软件库的最佳语言。 C语言是实现 SQLite 最好的语言的...

    entner 评论0 收藏0
  • 配置|electron+vue+ts+sqlite配置

    摘要:因为项目可能涉及到操作系统相关库的调用如,使用浏览器是不支持的。其次,终端再开一个,执行如果一切顺利,的就正常打开了打包配置但是,上面的配置还有一些问题。方案二方案一解决了问题一。库由于的原因无法在渲染进程中运行。 从编程模型的角度来说,使用声明式语言声明样式和布局,使用功能完备的编程语言编写业务逻辑,算是GUI程序的一种最好的实践了。 最近要写一个个人项目,于是我自然想到使用前端来写...

    lifefriend_007 评论0 收藏0
  • Worktile 移动团队如何使 C++ 完成 Worktile Pro 跨平台应开发<2

    摘要:请求下来数据之后,我们使用了提供的进行解析,类化。示例代码本篇我们将提供以及示例代码来阐述我们上文中提到的用法。下一节下一节中我们将针对初创公司端技术团队构建的一些问题来阐述我们的团队如何构建以及运作的。 设计 网络请求 - 解析数据 - 写入缓存 - 读取缓存 在上篇的文章中我们说明了我们在是在 MVC 层面的 M 层共享了代码,不过对于只是有可能需要 OpenSDK 的团队来说,更...

    seanHai 评论0 收藏0
  • 使 Python 的 SQLite JSON1 和 FTS5 扩展

    摘要:每个对象包括一个标题,一个和顶层的元数据键,下面是提取作品标题的代码对应下面创建的查询在接下来的例子中,将提取包含特定标签的条目。对于扩展,该可选字典提供了附加元数据进行标记字段,以及通过前缀的长度存储快速前缀查询。 早在九月份,编程界出现一个名为 json1.c 的文件,此前这个文件一直在 SQLite 的库里面。还有,笔者也曾总结通过使用新的 json1 扩展来编译 pysqli...

    Lorry_Lu 评论0 收藏0
  • 使 Python 的 SQLite JSON1 和 FTS5 扩展

    摘要:每个对象包括一个标题,一个和顶层的元数据键,下面是提取作品标题的代码对应下面创建的查询在接下来的例子中,将提取包含特定标签的条目。对于扩展,该可选字典提供了附加元数据进行标记字段,以及通过前缀的长度存储快速前缀查询。 早在九月份,编程界出现一个名为 json1.c 的文件,此前这个文件一直在 SQLite 的库里面。还有,笔者也曾总结通过使用新的 json1 扩展来编译 pysqli...

    avwu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<