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

186
Views
¿Por qué hay gastos generales al llamar a funciones?

A menudo, la gente habla de la llamada de funciones que produce una cierta cantidad de gastos generales , o un conjunto ineludible de preocupaciones y circunstancias adicionales, en un programa. ¿Se puede explicar esto mejor y compararlo con un programa similar sin la llamada a la función?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Depende de la configuración de su compilador y la forma en que optimiza el código. Algunas funciones están en línea. Otros no lo son. Por lo general, depende de si está optimizando el tamaño o la velocidad.

En general, la función de llamada provoca retrasos por dos razones:

  • El programa necesita conectarse a alguna ubicación aleatoria en la memoria donde comienza el código de su función. Para hacer esto, necesita guardar la posición actual del cursor en una pila para saber a dónde regresar. Este proceso consume más de un ciclo de CPU.

  • Dependiendo de la arquitectura de su CPU, puede haber una canalización, que obtiene las siguientes instrucciones de la memoria en el caché de la CPU en paralelo con la ejecución de la instrucción actual. Esto es para acelerar la velocidad de ejecución. Cuando llama a una función, el cursor se conecta a una dirección completamente diferente y todas las instrucciones almacenadas en caché se eliminan de la canalización. Esto provoca más retrasos.

over 4 years ago · Santiago Trujillo Report

0

También vea aquí y aquí para una discusión sobre cuándo tendría sentido la inserción.

  • en línea

    En general, solo puede sugerirle al compilador que inline una función, pero el compilador puede decidir lo contrario. Sin embargo, Visual Studio ofrece su propia palabra clave forceinline . Algunas funciones no pueden estar en línea, por ejemplo, cuando son recursivas o cuando la función de destino no puede determinarse en tiempo de compilación (llamadas a través de tablas de funciones, llamadas a funciones virtuales en C++).

    Le sugiero que confíe en el compilador, independientemente de si una función debe estar en línea o no. Si realmente desea alinear su código, considere usar una macro en su lugar.

  • Gastos generales

    La sobrecarga de memoria es mínima cuando usa funciones porque no duplica el código; el código en línea se duplica en el sitio de la llamada. La sobrecarga de rendimiento en estos días es insignificante porque las arquitecturas modernas son realmente buenas para predecir y llamar con una sobrecarga de aproximadamente 1-2 ciclos solamente.

over 4 years ago · Santiago Trujillo Report

0

Las funciones pueden estar en inlined , pero la norma (en su mayoría) es que las funciones están en una dirección particular, y los valores pasados a la función se colocan en la pila y el resultado se coloca en la pila y se devuelve.

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!