#include #include #include "ctimer.h"
int main()
{ char buf[512];
printf("buf[0]'s addr [%x][%d]\n", (int)(char*)&buf[0],(int)(char*)&buf[0]);
printf("buf[1]'s addr [%x][%d]\n", (int)(char*)&buf[1],(int)(char*)&buf[1]);
cmytimer t1;
int tmp = 0;
int count = 1000000;
memset(buf, sizeof(buf), 0);
t1.begin();
for (int i=0; i有21%的效能差異.
程式邏輯解釋:
1) 首先在棧上申請buf, 一般情況下, buf的首位址都是記憶體對齊後的 (編譯器不會那麼傻, 給使用者在棧上分配乙個位址不對齊的變數)
2) 然後做了4各個測試. 第乙個測試, 錯位乙個位元組, 每次讀取乙個整形,再寫入乙個整形. 後面依次錯位2,3,0位元組. 其中最後一次相當於沒有錯位.
記憶體對齊 記憶體對齊規則解釋 記憶體對齊原理
一 記憶體對齊的原因 我們都知道計算機是以位元組 byte 為單位劃分的,理論上來說cpu是可以訪問任一編號的位元組資料的,我們又知道cpu的定址其實是通過位址匯流排來訪問記憶體的,cpu又分為32位和64位,在32位的cpu一次可以處理4個位元組 byte 的資料,那麼cpu實際定址的步長就是4個...
記憶體對齊(自然對齊)
參考 今天與超,暉,棟,宇幾人論此問題,終得以下結論,不知正確與否,姑且記下。對於32位機,cpu的記憶體讀寫週期是4word,所以在記憶體對齊時,皆以此填滿。如 struct a char a double b char c sizeof a 4 8 4 16 struct b char a do...
Android效能測試 記憶體篇
android效能測試 記憶體篇 目的 保證合理使用記憶體 使用範圍 新增頁面 老頁面中有新增內容 頁面中有展示 有非同步執行緒跳轉 有頁面跳轉 頁面中有列表展示 頁面中有輸入框 測試項及測試標準 maxmemoryheap allocation memory值小於maxmemoryheap的60 ...