隨筆分類 - 程序性能優(yōu)化
摘要:開篇上一篇博文對緩存的思考——提高命中率詳細介紹了高速緩存的組織結(jié)構(gòu),并通過實例說詳細明了cpu從高速緩存中取數(shù)據(jù)的過程,對于緩存的工作機制應該有了清晰的認識。這篇博文就來簡單討論以下對于緩存在實際開發(fā)中的應用,這里將告訴你如何讓你的程序充分利用該緩存,即如何編寫高速緩存友好的代碼。提示:如果高速緩存的運行機制還沒有清晰的認識,請參照前面文章。注1:關(guān)于文中提到的局部性的相關(guān)知識參照:局部性原理淺析——良好代碼的基本素質(zhì)注2:這是一個系列的文章,收錄在程序性能優(yōu)化注3:文章知識有些地方不容易理解,所以用心才能看完噢。“用空間換時間”在搞算法的時候經(jīng)常能聽到這種說法,算法研究中通常要考慮算法的時
閱讀全文
摘要:開篇編寫高效的程序并不只在于算法的精巧,還應該考慮到計算機內(nèi)部的組織結(jié)構(gòu),cpu微指令的執(zhí)行,緩存的組織和工作原理等。好的算法在實際中不見得有高效率,如果完全沒有考慮緩存、微指令實現(xiàn)的話。前兩篇博文局部性原理淺析介紹了程序的局部性原理,如何寫出局部性良好代碼。提高程序性能、何為緩存討論了存儲器層次結(jié)構(gòu),計算機內(nèi)部的存儲結(jié)構(gòu)、緩存的概念,簡單的介紹了緩存的工作機制。建議先閱讀前兩篇博文,雖然他們之間聯(lián)系不大,在前面也有一些對本文的鋪墊。而且,這是一個系列的文章。旨在優(yōu)化程序性能。這篇博文主要介紹的是緩存的組織、工作原理。撥開迷霧,讓你更加清晰的認識緩存。通用緩存結(jié)構(gòu)回顧在提高程序性能、何為緩存中
閱讀全文
摘要:開篇上一篇博文局部性原理淺析——良好代碼的基本素質(zhì)中對程序局部性有了一個簡單的介紹。基本上已經(jīng)知道了如何編寫有良好局部性的代碼。但是為什么有良好局部性的代碼就能有良好的運行效率,這個問題將在這篇博文中給出解答。至于存儲器內(nèi)部的組織實現(xiàn),將在下篇文章中敘述。存儲器層次結(jié)構(gòu)我們知道,計算機里的存儲器有:硬盤、主存、高速緩存(其中又有一級高速緩存、二級高速緩存等等)、在往上就是寄存器。存儲器在計算機內(nèi)部的組織方式如下圖所示:相信上圖大家并不陌生。wiki對The memory hierarchy 的介紹的時候也有此圖。我們發(fā)現(xiàn),越往上,存儲器的容量越小、成本越高、速度越快。為什么會出現(xiàn)這樣的結(jié)構(gòu)呢?
閱讀全文
摘要:開篇一個優(yōu)秀的程序、優(yōu)美的代碼,一般都具有良好的局部性。簡潔、高效是每個程序員的追求。了解程序的局部性,能編寫出更高效的代碼。因為有良好局部性的程序能更好的利用緩存。不過這方面的只是將在以后的文章中介紹。這篇文章就簡單的介紹以下程序的局部性原理。什么是局部性局部性通常有兩種形式:時間局部性(temporal locality)時間局部性指的是:被引用過一次的存儲器位置在未來會被多次引用(通常在循環(huán)中)。空間局部性(spatial locality)如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。(這樣說過于理論了些,在下面的論述中會有例子說明)數(shù)據(jù)引用局部性例子是最好說明問題的途徑
閱讀全文

浙公網(wǎng)安備 33010602011771號