当前位置: 首页 > wzjs >正文

有专门做序列图的网站seo综合排名优化

有专门做序列图的网站,seo综合排名优化,惠州网站建设哪里有,简约网站模版博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x1…

 博主介绍:程序喵大人

  • 35- 资深C/C++/Rust/Android/iOS客户端开发
  • 10年大厂工作经验
  • 嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手
  • 《C++20高级编程》《C++23高级编程》等多本书籍著译者
  • 更多原创精品文章,首发gzh,见文末
  • 👇👇记得订阅专栏,以防走丢👇👇
    😉C++基础系列专栏
    😃C语言基础系列专栏
    🤣C++大佬养成攻略专栏
    🤓C++训练营
    👉🏻个人网站

最主要还是因为栈内存和堆内存的管理方式不同。

内存管理方式不同

栈内存

  • 栈内存是由编译器自动管理的,内存的分配和释放遵循 后进先出(LIFO) 的原则。

  • 栈内存的分配和释放是通过移动栈指针来实现的,这肯定是一个非常快速的操作。

    • 分配:栈指针向下移动,分配内存。

    • 释放:栈指针向上移动,释放内存。

堆内存

  • 堆内存是由程序员手动管理的,内存的分配和释放需要通过动态内存分配器(如 mallocnew)来完成。

  • 堆内存的分配和释放需要维护一个复杂的内存池,可能涉及很多复杂的操作,比如:

    • 查找合适大小的空闲内存块。

    • 分割或合并内存块以优化内存使用。

    • 处理内存碎片问题。

操作系统的介入

栈内存

  • 栈内存的分配和释放完全由程序控制,不需要操作系统的介入。

  • 栈内存的操作是用户态的操作,速度非常快。

堆内存

  • 堆内存的分配和释放可能涉及操作系统的介入(如通过 brkmmap 系统调用扩展堆空间)。

  • 堆内存的操作可能涉及 用户态和内核态 的切换,这会增加额外的开销。

内存碎片问题

栈内存

  • 栈内存的分配和释放是顺序的,不会产生内存碎片问题。

堆内存

  • 堆内存的分配和释放是随机的,可能会导致内存碎片问题。

  • 内存碎片会降低内存分配器的效率,增加分配和释放的时间。

缓存局部性

栈内存

  • 栈内存的分配是连续的,具有良好的缓存局部性

  • CPU 缓存可以高效地预取栈内存中的数据,提高访问速度。

堆内存

  • 堆内存的分配是分散的,缓存局部性较差。

  • CPU 缓存可能无法高效地预取堆内存中的数据,导致访问速度较慢。

线程安全性

栈内存

每个线程都有自己的栈,栈内存的分配和释放是线程私有的,不需要考虑线程同步问题。

堆内存

堆内存是全局共享的,分配和释放可能涉及线程同步问题(如锁机制),增加额外的开销。

代码示例

#include <iostream>
#include <chrono>void stackMemory() {auto start = std::chrono::high_resolution_clock::now();for (int i = 0; i < 1000000; ++i) {int arr[100]; // 栈内存分配}auto end = std::chrono::high_resolution_clock::now();std::cout << "Stack time: "<< std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()<< " microseconds" << std::endl;
}void heapMemory() {auto start = std::chrono::high_resolution_clock::now();for (int i = 0; i < 1000000; ++i) {int* arr = new int[100]; // 堆内存分配delete[] arr; // 堆内存释放}auto end = std::chrono::high_resolution_clock::now();std::cout << "Heap time: "<< std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()<< " microseconds" << std::endl;
}int main() {stackMemory();heapMemory();return 0;
}

输出结果

Stack time: 1267 microseconds
Heap time: 13792 microseconds

从结果可以看出,栈内存的分配和释放速度远远快于堆内存。

总结

栈内存的申请和释放速度快于堆内存,主要原因包括:

  1. 栈内存的管理是自动且顺序的,而堆内存的管理是手动且随机的。

  2. 栈内存的操作不涉及操作系统和线程同步,而堆内存可能涉及系统调用和锁机制。

  3. 栈内存具有良好的缓存局部性,而堆内存的缓存局部性较差。

  4. 栈内存不会产生内存碎片问题,而堆内存可能会产生内存碎片。

    码字不易,欢迎大家点赞关注评论,谢谢!


C++训练营

专为校招、社招3年工作经验的同学打造的1V1 C++训练营,量身定制学习计划、每日代码review,简历优化,面试辅导,已帮助多名学员获得大厂offer!

http://www.dtcms.com/wzjs/132244.html

相关文章:

  • 门户网站建设 总结站长之家域名查询鹿少女
  • 网站开发表格汕头网站排名优化
  • wordpress上传附加公众号seo排名软件
  • 北流网站建设人工智能培训课程
  • wordpress 添加友情百度seo排名优化公司哪家好
  • 阳光保险网站长沙网络公司最新消息
  • 建设企业查询平台信息流广告优化师培训
  • 网站维护方案怎么做百度广告代理商加盟
  • 綦江网站建设东莞seo网站排名优化
  • 大连最好的网站制作公司网站宣传
  • 排名好的昆明网站建设推广运营怎么做
  • wordpress菜单高度优化营商环境发言稿
  • 金华住房与城乡建设部网站广告营销是做什么的
  • 做网站要哪些技术优化电池充电什么意思
  • 微信公众平台小程序二维码怎么生成百度seo排名
  • 哪个网站做网站好安卓优化
  • 西安网站排名优化美国站外推广网站
  • 装修设计网站排行榜前十名福州网站seo优化公司
  • 网站建设完毕后怎么加后台广东seo
  • 企业网站文章合肥网站推广优化
  • 公司网站模板 网盘下载网推项目平台
  • 好知网做网站市场调研报告的基本框架
  • 成都时代装饰工程有限公司seo优化专员工作内容
  • 云集网站建设公司如何网络媒体推广
  • 扬州网站建设公元国际微信小程序开发平台官网
  • 新乡手机网站建设哪家好chatgpt入口
  • 商城通网站建设今天全国疫情最新消息
  • 国外展览展示设计网站网站模板平台资源
  • 中小型网站建设信息搜索引擎营销的特点有
  • 做网站那个php好用陕西网络推广介绍