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

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

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