緩存未命中

緩存未命中(Cache Miss) 發生在 CPU 訪問某塊內存時,該地址不在當前緩存(L1/L2/L3)中,導致程序被迫從更慢的內存(RAM)讀取數據,嚴重拖慢程序執行速度。

📍 一、什么時候會發生緩存未命中?
常見原因包括:
場景 說明
? 數據訪問不連續 比如訪問數組跳著取(a[i*10])導致預取失敗
? 頻繁訪問大量數據 比如一個 10GB 數組,超出緩存容量(一般幾十KB ~ MB)
? 使用指針結構(如鏈表)遍歷 每個節點不連續,CPU 無法預取
? 跨線程競爭同一緩存行(稱為 false sharing) 多線程操作挨得太近的數據
? 數據結構嵌套復雜 多層嵌套對象,內存分布分散
? 隨機訪問容器(如 unordered_map) 哈希表節點可能分散,跳來跳去訪問內存

? 示例:跳躍訪問數組(壞的局部性)
? 示例:鏈表遍歷

如何減少

? 1. 連續內存訪問(改善局部性)
? 2. 結構體內存對齊優化
? 3. 數組替代鏈表
? 4. 減少內存分配碎片
? 5. 利用預取機制(CPU會自動做,但你可幫它)
? 6. 結構體壓縮布局(小對象數組壓縮)
? 7. 多線程注意緩存行對齊
? 避免 false sharing

結構體壓縮布局的思想:

不要這樣:
std::vector<std::unique_ptr<Node>> nodes;
會導致數據四分五裂,緩存命中率差。應該這樣:struct Node { int x, y; };
std::vector<Node> nodes;// 所有數據連續,命中率高!? 簡單解釋:這個建議的核心是 數據布局 與 緩存命中率 的關系。🧠 你代碼是干嘛的?
不推薦的寫法:
std::vector<std::unique_ptr<Node>> nodes;你創建了一個 vector 容器,里面放的是 指向 Node 的智能指針。每個 Node 是單獨在堆上分配的內存(用 new 出來的)。所以,內存長這樣:[nodes vector] ---> [ptr1] --> [Node1 在堆上][ptr2] --> [Node2 在堆上][ptr3] --> [Node3 在堆上]這些 Node 是分散在內存中的。如果你遍歷 nodes,訪問每個 Node,由于它們位置不連續,CPU 緩存命中率差,性能低。推薦的寫法:
struct Node { int x, y; };
std::vector<Node> nodes;你創建了一個 vector<Node>。每個 Node 是直接在 vector 的內部內存塊中分配的,是 連續排列的!內存結構大概是這樣的:[nodes vector 內存] --> [Node1][Node2][Node3](連續)當你遍歷這個 vector 的時候,CPU 能一次性加載多個 Node 進緩存,命中率高,性能好。📌 總結:為啥推薦第二種寫法?
項目	vector<unique_ptr<Node>>	vector<Node>
內存布局	分散在堆上	連續在內存中
CPU 緩存命中率	差	高
遍歷性能	差	高
適用場景	Node 很大或多態(虛函數)時才需要	Node 很小且無繼承時最好用這個
?? 補充說明:如果 Node 是一個 抽象基類或有復雜資源管理(如虛函數、繼承、變長數據) 的結構,那你可能不得不用 unique_ptr<Node>。但如果 Node 是個簡單的數據結構,比如 int x, y; 這種,就盡量用 值類型(vector<Node>),性能會更好。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96600.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AR眼鏡:化工安全生產的技術革命

在石化企業的壓縮機組巡檢中&#xff0c;佩戴AR眼鏡的巡檢員眼前實時顯示著設備溫度場分布和振動頻譜曲線&#xff0c;單臺設備巡檢時間從45分鐘縮短至18分鐘。這不僅是效率的提升&#xff0c;更是化工安全生產的一場智能革命。一、行業痛點&#xff1a;傳統化工巡檢的困境與挑…

消息中間件RabbitMQ(從入門到精通)

RabbitMQ概念_MQ 消息隊列 MQ全稱Message Queue(消息隊列),是在消息的傳輸過程中保存消息的容器。多用于系統之間的異步通信。 同步通信相當于兩個人當面對話,你一言我一語。必須及時回復 異步通信相當于通過第三方轉述對話,可能有消息的延遲,但不需要二人時刻保持聯系。…

前端學習之后端java小白(五)之多表查詢/事務

一、多表查詢概念二、概述 1. 內連接隱式內連接 SELECT 字段列表 FROM 表1&#xff0c;表2... WHERE 條件顯示內連接SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 條件2. 外連接 左外連接SELECT 列名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 連接條件;右外連接SELECT 列名…

Java全棧學習筆記34

# JDBCjava database connection Java 數據庫連接技術## JDBC 驅動程序如果需要通過jdbc技術連接關系型數據庫&#xff0c;就需要為jdbc提供一個該數據庫的驅動。驅動程序由對應的數據庫廠商提供。mysql提供了針對于各種語言的驅動程序。去官網下載和java相關的驅動即可## JDB…

如何為MySQL中的JSON字段設置索引

背景 MySQL在2015年中發布的5.7.8版本中首次引入了JSON數據類型。自此&#xff0c;它成了一種逃離嚴格列定義的方式&#xff0c;可以存儲各種形狀和大小的JSON文檔&#xff0c;例如審計日志、配置信息、第三方數據包、用戶自定義字段等。 雖然MySQL提供了讀寫JSON數據的函數&am…

【學習日記】

1.上午看了會面經&#xff0c;八股&#xff0c;很多看不懂1.5排查本地mysql服務啟動問題2.刷了兩道題翻轉二叉樹的Dfs和bfs遞歸方法&#xff0c;看了幾分鐘看懂了&#xff0c;一開始刷題&#xff0c;沒有這種感覺&#xff0c;可能思維上升了3.下午做了會ppt4.看了ssm的一個gith…

本地大模型部署指南-Ollama與HuggingFace對比

在本地部署大模型時&#xff0c;用 Ollama 和 Hugging Face (HF) 確實有很大區別&#xff0c;涉及系統、硬件、訓練、推理方式&#xff0c;以及能否查看模型源代碼。下面我分幾個維度說明&#xff1a; 系統和安裝 Ollama 定位是「開箱即用」的本地大模型運行環境。 自帶運行時&…

河北周邊有哪些比較靠譜的智算中心?

河北省通過算力普惠、綠色能源、數據開放、金融支持四大支柱政策&#xff0c;推動智算中心高質量發展。河北及周邊地區的智算中心已形成高可靠性、先進技術和戰略協同的布局。那么&#xff0c;河北周邊有哪些比較靠譜的智算中心&#xff1f;一、河北周邊智算中心盤點?1、尚航懷…

電動汽車充電標準之 — 國標 GB/T 18487《電動汽車傳導充電系統》 簡介

GB/T 18487 的全稱是 《電動汽車傳導充電系統》 &#xff0c;它是中國電動汽車充電領域最基礎、最核心的國家標準之一。該標準規定了電動汽車傳導充電系統的通用要求、通信協議、安全要求等&#xff0c;是整個中國充電基礎設施建設的基石。 與您之前了解的IEC 61851類似&#x…

溫濕度傳感器如何守護工業制造?

在工業制造、農業養殖、倉儲物流乃至文物保護等領域&#xff0c;環境溫濕度的精確監測是保障品質與安全的關鍵。溫濕度傳感器作為無聲的守護者&#xff0c;如何通過穩定可靠的數據采集&#xff0c;為現代工業生產的精細化與智能化管理提供堅實基礎&#xff1f;本文將深入探討其…

破壁·融合·共贏:杭州大成慧谷基金與涉海科技混改項目公司正式啟航!

2025 年 7 月 15 日,一家融合國企基金實力與民企創新活力的混合所有制項目公司正式誕生——由杭州大成慧谷股權投資基金管理有限公司與山東涉海海洋生物科技有限公司共同出資設立的武創慧聚創芯科學技術(上海)有限公司,當日完成法律合規手續。此前,上海武創大智高新技術集團副總…

洛谷 P1271 【深基9.例1】選舉學生會-普及-

P1271 【深基9.例1】選舉學生會 題目描述 學校正在選舉學生會成員&#xff0c;有 nnn&#xff08;1≤n≤9991 \le n\le 9991≤n≤999&#xff09;名候選人&#xff0c;每名候選人編號分別從 111 到 nnn&#xff0c;現在收集到了 mmm&#xff08;1≤m≤20000001 \le m \le 20000…

【AI】AI 評測入門(二):Prompt 迭代實戰從“能跑通”到“能落地”

“Prompt 不是寫出來的&#xff0c;是測出來的。” ——這是我迭代 5 個版本后&#xff0c;最深的體悟。 上一篇《AI 評測入門&#xff08;一&#xff09;&#xff1a;先搞懂你的數據集)》&#xff0c;我們講了標簽體系、自測集、評測集、Langfuse 數據結構化——那是 AI 評測的…

【好靶場】SQLMap靶場攻防繞過 (一)

0x00 前言 最近遇到很多在做基礎靶場的小伙伴們都在SQLMap一把索&#xff0c;那么所幸搞一個SQLMap繞過的靶場。 我們是好靶場&#xff0c;一個立志于讓所有學習安全的同學用上好靶場的團隊。 https://github.com/haobachang-1/haobachangBlog/ https://github.com/haobach…

DeepSeek輔助編寫的利用quick_xml把xml轉為csv的rust程序

提示詞請用rust quickxml庫實現讀取xml的row和c標簽信息&#xff0c;并輸出到csv格式&#xff0c;要求是&#xff1a;數值型c&#xff0c;輸出標簽的內容&#xff0c;字符串型c(t “inlineStr”)&#xff0c;輸出的內容&#xff0c;row的r屬性表是行號&#xff0c;c的r屬性是字…

logback-spring.xml文件說明

項目里剛好用到&#xff0c;用豆包生成以下說明&#xff0c;此處作為記錄。以下是一個 logback-spring.xml 配置文件示例&#xff0c;結合了 Spring Boot 特性&#xff0c;支持環境區分、日志滾動和不同級別日志輸出&#xff0c;并包含詳細注釋&#xff1a;<?xml version&q…

專題:2025社交媒體營銷與電商融合趨勢報告:抖音、小紅書、短劇、直播全拆解|附210+份報告PDF、數據儀表盤匯總下載

原文鏈接&#xff1a;https://tecdat.cn/?p43853 原文出處&#xff1a;拓端抖音號拓端tecdat 3年前&#xff0c;電商還停留在“貨架擺貨、用戶搜關鍵詞下單”的傳統模式&#xff0c;社交媒體只是品牌“打知名度”的輔助工具&#xff1b;如今&#xff0c;用戶刷抖音直播能直接下…

大模型API密鑰生成規則分析

大模型API密鑰生成規則分析 一、核心生成原則與安全基礎 1.1 密碼學安全隨機數生成 大模型API密鑰的核心安全基礎在于高熵值隨機數生成,需滿足以下技術標準: 熵值要求:至少128位(16字節),推薦256位(32字節),通過密碼學安全偽隨機數生成器(CSPRNG)實現 生成算法:…

太陽光度計在光伏電站的用途

太陽光度計在光伏電站中具有多重關鍵用途&#xff0c;能夠為電站的規劃、運行、維護及能效提升提供科學依據。以下是其具體應用場景及價值分析&#xff1a;1. 太陽能資源評估與電站選址優化核心功能&#xff1a;太陽光度計通過測量直接太陽輻射&#xff08;DNI&#xff09;、散…

ArkTS(方舟 TypeScript)全面介紹:鴻蒙生態的核心編程語言

一、引言 隨著鴻蒙(HarmonyOS)的快速演進,開發者生態成為支撐其發展的關鍵因素。無論是手機、平板、智能穿戴,還是車機、IoT 設備,鴻蒙都希望通過“一次開發,多端部署”的理念,讓開發者能夠更高效地構建應用。 為了實現這一目標,華為推出了 ArkTS(方舟 TypeScript)…