Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

463
Visualizações
¿Configurar una memoria usando memset en una plataforma que tiene recursos limitados?

Necesito borrar una parte de la memoria ( float s de 32 bits) a cero, y uso 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) }

¿Debería usar memset() en su lugar? ¿Funcionará mejor en una plataforma con recursos limitados? ¿ GCC optimizará my_set para usar memset ?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Parece que lo hará: https://godbolt.org/z/hP8jr1odP

Parece que depende de la arquitectura y el tamaño de la matriz, pero generalmente se optimizará para memset : https://godbolt.org/z/YqnrEfPGY

 #define MY_SIZE 1024 * 1024 static inline void my_set(float *dst, float v, int n) { while (n-- > 0) *(dst++) = v; } float my_mem[MY_SIZE]; int main() { my_set(my_mem, 0.0f, MY_SIZE); }
Tamaño de matriz \ Arquitectura x86_64 brazo brazo64 riesgo-v
1 KiB círculo conjunto de miembros conjunto de miembros conjunto de miembros
1 MiB conjunto de miembros conjunto de miembros conjunto de miembros conjunto de miembros

Aún así, confiaría en que el compilador sepa qué es lo mejor y no se preocupe demasiado.

over 4 years ago · Santiago Trujillo Relatório

0

¿Debería usar memset() en su lugar?

Sí.

¿Funcionará mejor en una plataforma con recursos limitados?

Sí. O al menos no funcionará peor.

¿GCC optimizará my_set para usar memset?

Si no talvez. Al compilar con -ffreestanding (objetivo de sistemas integrados), intenta no incluir ninguna llamada de biblioteca y luego descarta cualquier llamada memset . De lo contrario, en entornos similares a PC, el código de la máquina parece reducirse a una llamada de memset .

Tenga en cuenta que establecer algo en cero explícitamente o establecerlo en un valor generará un código de máquina muy diferente.

memset y funciones de biblioteca similares están optimizadas para funcionar bien en el ancho de datos de la CPU. Que no es necesariamente lo mismo que el ancho de datos de un flotante, normalmente de 32 bits.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda