• [^] # Re: Survivor

    Posté par . En réponse au journal C, un âge remarquable. Évalué à 2.

    Plusieurs choses. Déjà c’est du Swift, pas du go. Les mecs de go ont pas de voyelles sur leur clavier non plus.

    Ensuite, oui, == est souvent plus cher en Swift qu’un ==, mais pas pour les raisons que tu cites. C’est une égalité de valeur, pas de référence. Swift utilise === pour l’égalité de références.

    Pour finir, la normalisation n’est pas appliquée à chaque égalité, mais a la constructiom, quand tu vas devoir itérer ta chaîne pour les raisons au dessus. J’ai pas les détails de l’implémentation, mais l’essentiel de ce que tu vois ici est appliqué de façon paresseuse. Tu le payes (presque) pas tant que tu l’utilises pas. Encore que, je suppute que utf8CString est simplement le buffer qui back la chaîne, ce qui me fait penser que même la normalisation est appliquée de façon paresseuse en fait.

    Et oui, les mecs du runtime ont passé beaucoup de temps à peaufiner leur api string pour éviter que ça soit « bloated », c’est pour ça qu’on s’est tapé un changement d’api à mi chemin. Ça tourne sur des montres, donc bon, ils s’en sortent pas trop mal quand même.