nginx php 字節對齊

ngxin這種內存對其是爲了減少向內存或者CPU緩存讀取數據的時候,減少讀取的次數。 類似於讀取硬盤數據時,都是一頁一頁單位讀取的。 能夠保證一次性能夠讀取到完整的數據.

#define ngx_align(d, a) (((d) + (a - 1)) & ~(a - 1))

ngx_align(23,16)    就是取16的最小整數倍 且這個值要大於23 = 32

37&~15  

15 轉化爲二進制   00 011111 取反    11 110000

37 二進制 00 100101

00 100101

11 110000

00 100000 = 2的5次方 =  32

 

php內核  獲取地址ptr以alignment整數對齊的偏移量

#define ZEND_MM_ALIGNED_OFFSET(size, alignment) \

    (((size_t)(size)) & ((alignment) - 1))

ZEND_MM_ALIGNED_OFFSET(ptr, alignment) = 0x7ffff126b000 & (2*1024*1024-1) = 438272

(gdb) p 0x7ffff126b000 & (2*1024*1024-1)
$9 = 438272

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章