代码复用与微调:提升编程效率与性能
1. 不同类型多映射的特性
不同类型的多映射在返回键和值时具有不同的顺序特点:
- 未排序多映射按插入顺序返回键(如 3, 2, 1),而排序多映射按排序顺序返回键(如 1, 2, 3)。
- “标准”版本返回所有值(如 ccbbaa),“哈希”版本按插入顺序返回值(如 cba),“树”版本按排序顺序返回值(如 abc)。
2. 算法复杂度分析
由于存在多种不同的实现方式,算法复杂度表较为复杂,如下表所示:
|操作|普通多映射(键)|排序多映射(键)|值(列表)|值(哈希)|值(树)|
| ---- | ---- | ---- | ---- | ---- | ---- |
|访问|不可用|不可用| - | - | - |
|搜索|O(1)|O(log n)|O(n)| - | - |
|插入|O(1)|O(log n)|O(1)|O(1)|O(log n)|
|删除|O(1)|O(log n)|O(n)|O(1)|O(log n)|
需要注意的是,插入和删除值的复杂度不包括访问键的成本。例如,在 SortedHashMultiMap 中,移除一个值的复杂度为 O(1),但由于首先需要以 O(log n) 的时间访问键,因此总复杂度为 O(log n)。
3. 代码微调的必要性与途径
当无法通过更改算法来提高代码速度时,我们可以采取以下几种方法来优化代码:
- 优化程序 :通过更改程序的小部分并替换为更快的代码。
- 使用汇编
超级会员免费看
订阅专栏 解锁全文
654

被折叠的 条评论
为什么被折叠?



