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

190
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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