• [^] # Re: NSObject sur M1

    Posté par . En réponse au journal MacOS contre Debian sur un test de build de Firefox. Évalué à 4.

    Pour en rajouter une couche, le retain/release chez Apple, c’est tout un art.
    Les chiffres qu’il donne sont pour le « happy path » il me semble, à savoir un retain count suffisamment bas, sans weak references.

    Dans ce scénario, le retain count est stocke directement dans le pointer, un retain release devient donc une opération très simple de compare and swap.

    Bien sur, cette optimisation n’est efficace que dans le cas de base, à savoir un retain count qui rentre dans les qq bits alloués dans le pointeur, sans weak references.
    Note qu’ils font le même genre de tours de magies avec NSNumber, ou la valeur est stockée directement dans les pointeurs.

    C’est bon de garder ça à l’esprit quand la team runtime chez Apple se vante de leurs performances. Ça reste très impressionnant quand même, et ça marche très bien la plupart du temps, mais il faut se rappeler que tu peux facilement rentrer dans le slow path, qui va clairement pas tourner en 15 nanosecondes.