Des gains sur la taille mémoire : cas client Safehear

Publié le 1 mars 2023

Est-ce que mon soft embarqué peut être optimisé ? Est-ce que je vais pouvoir gagner en performance sur mon produit, sur quoi et à quelle hauteur ?
Que de bonnes questions que nous avons prises à bras le corps fin 2022 lorsque Antoine Kuhnast, CTO et co-fondateur de Safehear avec Héléna Jérome, nous les a soumises, à la fois sur la première version de leur équipement de protection auditive communicante aujourd’hui commercialisée et sur leur projet de nouvelle version.

Les étapes d’un Diagnostic

Cette phase de Diagnostic avait vocation à leur permettre d’y voir plus clair sur les enjeux potentiels d’optimisation et de chiffrer ce potentiel.
Lorsque nous travaillons avec nos clients en mode prestation, cela commence par s’approprier le code et son jeu d’entrées. Puis on plonge au cœur de son fonctionnement pour repérer là où ça consomme pour comprendre sur quoi porte cette conso (du calcul ? de la mémoire ? du contrôle ?), chercher les raisons, identifier les dépendances. La partie calculatoire est au cœur de notre expertise, alors quand « ça chauffe » du côté algorithmique, on est assez excité.
In fine, on projette l’optimisation possible en lien avec l’usage du produit et les objectifs de l’entreprise vis-à-vis de ce dernier.

Vient ensuite le moment de partager les pistes d’optimisation avec notre client. Un moment important car notre mission est bien d’accompagner les équipes dans leurs choix. Nous sommes des compagnons qui aidons à faire, en s’engageant aux côtés des équipes par les résultats concrets délivrés par notre expertise. Cette étape invite aussi prendre du recul sur le travail qui a pu être réalisé jusqu’à présent par notre client et à imaginer des alternatives possibles en se posant d’autres questions avec de nouvelles métriques.

Les résultats

Dans certains cas, comme avec Safehear, la piste qui semblait évidente ou la plus prometteuse débouche…sur d’autres pistes qui le sont encore plus. Ici, toute la partie décodage était déjà très bien optimisée, et il n’y avait pas de SIMD possible (le parallélisme, un de nos dadas, ça peut être puissant dans certains cas). C’est en soi un gage de réassurance qui vient assoir les certitudes des équipes avant d’aller plus loin.
En prolongeant le travail, nous sommes parvenus à identifier des gains possibles sur la partie décodage avec en bonus une qualité du signal améliorée en sortie et, parce qu’on aime creuser les choses, nous avons pu mettre en exergue un potentiel d’optimisation assez conséquent sur la partie espace mémoire (entre 40% et 50% sur la taille d’une bibliothèque pour 20% à 30% de gains sur le binaire dans son entièreté).

Pour le produit, car c’est ce qui nous anime au fond, ce sont des perspectives concrètes, ici, en termes de qualité (rendu, vitesse) et de durée vie potentielle. Un besoin mémoire réduit offre des perspectives de mises à jour plus importantes et l’ajout de nouvelles fonctionnalités potentielles.

Vous aussi si comme Antoine vous avez besoin de gagner en performance ou vous vous posez la question du potentiel d’optimisation de votre application, parlons-en !