| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 利用顺序存储链表节点提高性能 -> 正文阅读 |
|
[数据结构与算法]利用顺序存储链表节点提高性能 |
数组和链表,是数据结构和算法领域的基石。 数组相比链表的优势在于,数组是连续存储空间,可以最大化利用CPU Cache。 而链表的相邻节点,其地址可能相差很远,就会导致CPU可能需要去内存寻址而不是在三级缓存中。 那么在某些数据结构的设计时,就可以考虑即使用上数组的连续空间特性,又使用上链表快速新增和删除的特性。 考虑如下一个场景,统计最近10秒,每秒的发送量。 比如, 在第12秒时统计最近10秒的发送量,那么就是把第3秒到第12秒的发送量相加。 如果完全使用数组,那么在新增一秒的数据时,因为数组的大小是固定的,就不可避免地要进行元素移动。 如果将二者的特性结合起来,比如程序启动时,就一次性创建10个链表节点,那么这10个节点在内存中是连续的,然后再将这10个节点连接起来组成一个双链表,那么新增、删除、访问节点就都非常高效。 每次新增一个元素时,其实就相当于先将链表尾部的节点从链表中删除,再将该节点放在链接头部做头节点。 至于计算总和时,不需要每次都遍历一边相加,可以先减最后一个节点的发送量,再将其从链接删除,新的发送量放到新的头节点后,再加到总和里。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/10 2:01:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |