• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

325
Vistas
¿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 ?

about 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

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.

about 3 years ago · Santiago Trujillo Denunciar

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.

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda