TacOS-team / tacos

Système d'exploitation / Operating System
GNU General Public License v3.0
9 stars 4 forks source link

Optimiser certains bouts de la libc #171

Closed MaximeCheramy closed 9 years ago

MaximeCheramy commented 11 years ago

Cette histoire de loop remplacée par un appel à memset m'a fait réfléchir : ok, un memset est sans doute optimisé au mieux et au pire on ajoute qu'un appel de fonction donc c'est une bonne chose. Et du coup je me suis dit : oui mais notre memset, lui, il n'est certainement pas optimisé... Et effectivement, notre memset fait des affectations octets par octets alors qu'il pourrait le faire par morceaux de 32 bits.

Bien que le code résultat soit particulièrement simple, ce serait pas mal d'optimiser. Et par la même occasion, on pourrait essayer d'optimiser d'autres fonctions, en commençant en priorité par les fonctions les plus utilisées.

MaximeCheramy commented 11 years ago

Dans le code de memcpy ya de l'idée mais on peut faire mieux :

On peut faire ça dans memcpy et memset, mais pas seulement.

MaximeCheramy commented 11 years ago

J'ai recodé memcpy pour l'optimiser et les résultats ne sont pas probants. Sous linux en compilant sans optimisation j'ai des gains, mais dans tacos avec -O3, je n'ai pas senti de différence. En tout cas, ça n'a pas l'air négatif comme effet, mais cela complexifie le code du coup j'hésite à commiter. Pour le moment je le laisse dans un coin. (à voir pour le kernel qui n'est pas optimisé...)

Pour les fonctions toupper/tolower, j'ai essayé d'utiliser un tableau de 256 cases pour faire la conversion plus rapidement. Le problème c'est que ces fonctions prennent un int en entrée et que du coup je suis obligé de rajouter un if pour pas sortir de mon tableau et résultat, j'ai les même performances que le code actuel...

NicolasFloquet commented 9 years ago

Faudrait lister les fonctions que l'on pourrait potentiellement optimiser pour voir le reste à faire.

MaximeCheramy commented 9 years ago

Je vois pas trop ce qu'il reste à améliorer, le ticket est devenu trop vague. +1 pour la liste des fonctions, sinon on ferme.