鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

避免对整个字符串数组清零

【说明】 设置字符串数组为空字符串,只需要对第一个字节赋值'\0',避免对整个空间清零。

【原理】 有效降低操作指令数,提升效率。

【注意事项】 不涉及

【案例】

优化前
typedef struct{
    char str1[0x10000];
    char str2[0x10000];
    int len;
}DemoStru;

DemoStru *init()
{
    DemoStru *pointer = malloc(sizeof(DemoStru));
    if(pointer == NULL) {
        return NULL;
    }

    memset(pointer, 0, sizeof(DemoStru));
    return pointer;
}

说明:上述大的字符串数组,整体清零,造成较大的指令开销。

优化后
typedef struct{
    char str1[0x10000];
    char str2[0x10000];
    int len;
}DemoStru;

DemoStru *init()
{
    DemoStru *pointer = malloc(sizeof(DemoStru));
    if(pointer == NULL) {
        return NULL;
    }

    pointer->str1[0] = '\0';
    pointer->str2[0] = '\0';
    pointer->len = 0;

    return pointer;
}

说明:改变字符串初始化方式,减少操作指令数。