Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

461
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!