栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

iota_n(STL的缺失算法)将是一个很好的实现

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

iota_n(STL的缺失算法)将是一个很好的实现

作为一个随机示例,我使用

g++ -S -O2 -masm=intel
(GCC 4.7.1,x86_32)编译了以下代码:

void fill_it_up(int n, int * p, int val){    asm volatile("DEBUG1");    iota_n(p, n, val);    asm volatile("DEBUG2");    iota_m(p, n, val);    asm volatile("DEBUG3");    for (int i = 0; i != n; ++i) { *p++ = val++; }    asm volatile("DEBUG4");}

iota_n
是第一个版本,
iota_m
第二个版本。在所有三种情况下,程序集都是这样的:

    test    edi, edi    jle .L4    mov edx, eax    neg edx    lea ebx, [esi+edx*4]    mov edx, eax    lea ebp, [edi+eax]    .p2align 4,,7    .p2align 3.L9:    lea ecx, [edx+1]    cmp ecx, ebp    mov DWORD PTR [ebx-4+ecx*4], edx    mov edx, ecx    jne .L9

随着

-O3
,三个版本也非常相似,但 很多 更长(使用条件的动作和
punpcklqdq
与此类似的)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号