Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

387
Vistas
¿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 Respuestas
Responde la pregunta

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 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda