gpt4 book ai didi

c - 在资源有限的平台上使用 memset 设置内存?

转载 作者:行者123 更新时间:2023-12-05 09:02:51 24 4
gpt4 key购买 nike

我需要将一大块内存(32 位 float)清零,我使用 my_set():

static inline void my_set(float *dst, float v, int n)
{
while (n-- > 0)
*(dst++) = v;
}

#define MY_SIZE 1024

int main()
{
float my_mem[MY_SIZE];

my_set(&my_mem, 0.0f, MY_SIZE)

}

我应该使用 memset() 吗?反而?它会在资源有限的平台上表现更好吗?威尔GCC优化 my_set 以使用 memset

最佳答案

Should I use memset() instead?

是的。

Will it perform better on a platform with limited resources?

是的。或者它至少不会表现得更差。

Will GCC optimize my_set to use memset?

是的,不,也许吧。当使用 -ffreestanding(嵌入式系统目标)编译时,它会尝试不包含任何库调用,然后丢弃任何 memset 调用。否则在类似 PC 的环境中,机器代码似乎可以归结为 memset 调用。

请注意,将某些内容显式设置为零或将其设置为一个值将生成截然不同的机器代码。

memset 和类似的库函数经过优化以在 CPU 的数据宽度上表现良好。这不一定与 float 的数据宽度相同,通常为 32 位。

关于c - 在资源有限的平台上使用 memset 设置内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70739318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com