程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++14對內存分配性能的重大優化

c++14對內存分配性能的重大優化

編輯:C++入門知識

c++14對內存分配性能的重大優化


Table of Contents

1. 本質需求2. 存在的問題3. 解決方案

簡述, C++14標准對內存優化的描述修改, 會讓編譯器引入類似TCMalloc的內存分配優化策略, 而不拘泥於原來的有一個new語句,就分配一次內存的傻傻的情況. 因此有理由相信用C++14的編譯器編譯出來的c++程序在內存分配上性能會有較多提升. 下面的文字來源於clang編譯器提供的文檔, 我對其主要內容進行了意譯. 個人感覺是, 不再需要引入TCMalloc庫來幫助提升性能, 直接使用c++14就行了.

1 本質需求

需要優化內存分配和回收

    內存的分配和回收已經成為現代系統很重要的成本.區分內存分配優化和調用優化好的系統性能需要對應用的動態行為適配不同的分配策略, 或者根據應用提供的線索采用不同的分配策略.

    2 存在的問題

      當前C/C++標准可能會導致
        分配策略只考慮與new/delete語句順序有關的事情, 而忽略其他重要的有助於優化的信息分配策略只考慮為每一句new語句執行分配內存的調用語句,而忽略分配的優化

        3 解決方案

        建議修改標准文檔的措辭,使得更加准確的聚焦在本質需求上, 使得某些編譯器和內存分配器已經支持的優化行為得到體現,比如TCMalloc.

          在某些情況下, 內存分配函數的調用次數在程序中不能被觀察到. 這樣允許實現者可以減少調用的次數(通過避免調用或者合並調用)避免調用或者合並調用所分配的空間不會超過代碼中new語句要求分配的, 只有一種例外,就是為了適應內存對齊要求而需要用額外的內存填補縫隙.

          此建議不適用於class-specific 內存分配器

            建議標准中直接說明實現要遵守data-race free規則, 參考data-race free來歷 和 data-race free原理

            Author: dean

            Created: 2015-12-27 日 16:17

            Validate


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved