《C语言接口与实现:创建可重用软件的技术》一2.5 效率

简介:

本节书摘来自异步社区《C语言接口与实现:创建可重用软件的技术》一书中的第2章,第2.5节,作者 傅道坤,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.5 效率

本书中的接口的大多数实现所使用的算法和数据结构,其平均情况运行时间不会超过N(输入规模)的线性函数,大多数算法都能够处理大量的输入。无法处理大量输入的接口,或者性能可能成为重要影响因素的接口,可以规定性能标准(performance criteria)。实现必须满足这些标准,客户程序可以预期性能能够达到标准的规定(但不会比标准好上多少)。

本书中所有的接口都使用了简单但高效的算法。在N较大时,更复杂的算法和数据结构可能有更好的性能,但N通常比较小。大多数实现都只使用基本的数据结构,如数组、链表、哈希表、树和这些数据结构的组合。

本书中的ADT,除少量之外全部使用了不透明指针,因此需要使用诸如Stack_empty之类的函数来访问隐藏在实现背后的字段。调用函数而不是直接访问字段会带来开销,但它对实际应用程序性能的影响通常都是可忽略的。这种做法在可靠性和捕获运行时错误的机会方面带来的改进是可观的,远超性能方面的轻微代价。

如果客观的测量表明确实有必要改进性能,那么这种改进不应该改变接口,例如,可通过定义宏进行。当这种方法不可行时,最好创建一个新接口并说明其性能方面的优势,而不是改变现存的接口(这将使所有的客户程序无效)。#

相关文章
|
4月前
|
前端开发 算法 JavaScript
【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏
【新手解答3】深入探索 C 语言:头文件提供必要的接口、源文件保持实现细节的私有性 + 进一步学习的方向 + 如何快速编写程序并最终能制作小游戏
60 0
|
4月前
|
存储 C语言
探索顺序表:数据结构中的秩序之美(c语言实现常见功能接口)
探索顺序表:数据结构中的秩序之美(c语言实现常见功能接口)
38 0
|
5月前
|
安全 Linux 程序员
「技术干货」一文搞懂C语言内存模型与栈
「技术干货」一文搞懂C语言内存模型与栈
|
7月前
|
测试技术 API C语言
C语言实现一个简易版的打字软件
C语言实现一个简易版的打字软件
78 0
|
7月前
|
存储 安全 Java
使您的软件运行起来: 防止缓冲区溢出(C语言精华帖)
使您的软件运行起来: 防止缓冲区溢出(C语言精华帖)
38 1
|
C语言
造轮子之-C语言实现ArrayList
造轮子之-C语言实现ArrayList
|
10月前
|
程序员 C语言 C++
编程最重要的技术—调试(以C语言代码为例)
编程最重要的技术—调试(以C语言代码为例)
|
C语言
C语言实现学生成绩管理系统
本文提供一例C语言实现的命令行学生信息管理系统,供初学者参考。
290 0
|
存储 Linux C语言
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
|
存储 C语言
c语言实现扫雷(含循环递归展开)
本笔记通过c语言实现扫雷小游戏(包含递归展开) 游戏实现逻辑位于test.c文件,整个游戏头文件位于game.h,游戏进程的具体操作于game.c中实现。
148 0
c语言实现扫雷(含循环递归展开)