ngx_align_ptr

来源:互联网 发布:手机内置软件卸载 编辑:程序博客网 时间:2024/05/16 08:21

typedef unsigned char u_char;#define NGX_POOL_ALIGNMENT 16#define ngx_align_ptr(p, a)                                                   \    (u_char *) (((uintptr_t) (p) + ((uintptr_t) a - 1)) & ~((uintptr_t) a - 1))int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    char *p = (char *)malloc(1024);    u_char *p10 = ngx_align_ptr(p, 4);    u_char *p11 = ngx_align_ptr(p+1, 4);    printf("%X %X    %d\n\n", p10, p11, p11-p10);    u_char *p20 = ngx_align_ptr(p, 8);    u_char *p21 = ngx_align_ptr(p+1, 8);    printf("%X %X    %d\n\n", p20, p21, p21-p20);    u_char *p30 = ngx_align_ptr(p, 12);    u_char *p31 = ngx_align_ptr(p+1, 12);    printf("%X %X    %d\n\n", p30, p31, p31-p30);    u_char *p40 = ngx_align_ptr(p, 16);    u_char *p41 = ngx_align_ptr(p+1, 16);    printf("%X %X    %d\n\n", p40, p41, p41-p40);    u_char *p50 = ngx_align_ptr(p, 32);    u_char *p51 = ngx_align_ptr(p+1, 32);    printf("%X %X    %d\n\n", p50, p51, p51-p50);    u_char *p60 = ngx_align_ptr(p, 64);    u_char *p61 = ngx_align_ptr(p+1, 64);    printf("%X %X    %d\n\n", p60, p61, p61-p60);    int i;    return a.exec();}


Streaming SIMD Extensions

SSE是指令集的简称,它包括70条指令,其中包含单指令多数据浮点计算、以及额外的SIMD整数和高速缓存控制指令。其优势包括:更高分辨率的图像浏览和处理、高质量音频、MPEG2视频、同时MPEG2加解密;语音识别占用更少CPU资源;更高精度和更快响应速度。


AVX扩展指令包含了SSE指令,这也有助于AVX时代的过度。日前的SSEVEX格式也并不需要绝对的转换过程。Intel公司的Benny Eitan先生也提到,出于整体的考虑,Intel公司对于AVX普及的进行并不会太过迅速,并且也不会立刻停止SSE及MMX时代。


目前AMD新推出FMA指令也 是 AVX 指令集中的一部分。












Nginx源码分析--数据对齐posix_memalign和memalign函数







0 0
原创粉丝点击