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

386
Visualizações
¿Los nombres de las funciones afectan el rendimiento?

Swift es un lenguaje precompilado y todos los objetos se convierten en direcciones de memoria; sin embargo, hay un "Selector" especial en Swift que permite encontrar funciones por nombres de función en tiempo de ejecución. ¿Cómo funcionó esto? ¿Significa esto que nombrar funciones afectará la eficiencia operativa?

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

0

No , los nombres de las funciones no afectan significativamente el rendimiento en Swift.

Los nombres de funciones y métodos se utilizan de dos maneras principales una vez compilados en su programa:

  1. Cuando una función se llama directamente (estáticamente) por su nombre, el código compilado se refiere al símbolo (nombre de la función, convertido a un formato adecuado para su inclusión en el código binario producido), que luego se convierte en una operación de salto constante durante la vinculación , ya sea estática o dinámicamente
    • Simplificado: el nombre de la función no tiene ningún efecto sobre la llamada a la función; no se tiene en cuenta de ninguna manera al realizar la llamada
  2. Cuando se llama a una función dinámicamente usando el tiempo de ejecución de Objective-C (por ejemplo, como un selector ), el nombre de la función se usa para buscar el método apropiado en la caché de métodos de una clase. Los selectores son únicos en un programa, por lo que los nombres de funciones/métodos se asignan a un selector único globalmente, que es lo que se usa para la búsqueda (por puntero, no por nombre)
    • Cuando se refiere a un selector de forma estática (por ejemplo, con #selector(...) ), el selector único está precompilado en su programa, por lo que nunca es necesario buscar el nombre en el tiempo de ejecución, y el puntero del selector en sí puede hacerlo. usarse directamente al llamar a métodos
    • Si hace referencia a un selector dinámicamente (p. ej NSSelectorFromString(...) ), el selector se busca dinámicamente desde el nombre dado (en una tabla global de selectores únicos) y, si no se encuentra, se crea dinámicamente un nuevo selector en tiempo de ejecución.

En ambos casos (1) y (2a), el nombre de la función nunca se usa realmente en el proceso de hacer la llamada y es irrelevante. En el caso (2b), técnicamente lo es (para búsqueda de selector), pero el proceso es tan rápido que realmente no importa. Los nombres de los métodos rara vez son largos, ya que la mayoría de las veces se escriben a mano y, en comparación con la mayoría de las operaciones que puede realizar un programa, incluso el caso de uso más dinámico (buscar métodos manualmente en tiempo de ejecución) es tan insignificante que realmente no debería preocuparse. sobre eso


Otra consideración: cuando compila un programa con símbolos incrustados, esos símbolos ocupan espacio en su binario. Tampoco deberías preocuparte por eso porque:

  1. Una compilación de lanzamiento de un programa tendrá la mayoría de los símbolos eliminados, y
  2. En comparación con el tamaño de un binario debido al código, la cantidad de símbolos de espacio que ocupan suele ser totalmente insignificante.
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