• [^] # Re: Performance

    Posté par . En réponse au journal Koffi, un paquet simple, complet et rapide de FFI C pour Node.js. Évalué à 5.

    Merci !

    Globalement utiliser un module de Foreign Function Interface avec C c'est un compromis par rapport à un binding manuel, je pense qu'on peut dire que ça a de l'intérêt dans 3 cas :

    • La facilité de réutiliser du code existant en C, sans avoir à tout wrapper (avec N-API, les API V8, ou autre)
    • L'appel direct à des fonctions du système d'exploitation, par exemple Win32
    • Le côté dynamique, un peu comme faire la réflexion (en Java, en C#), au prix d'une perte de performance

    De mon point de vue, le benchmark le plus réaliste est celui basé sur Raylib, avec une perte de 20%. Il est rare d'avoir besoin d'une librarie de FFI pour appeler des fonctions très légères comme atoi() ou rand(), car ce sont des fonctionnalités généralement disponibles dans le langage, et/ou faciles à wrapper.

    Par contre, pour quelque chose comme Raylib, ImGui, une bibliothèque de sons, Win32, GTK+, etc. Et bien ça peut avoir un certain intérêt, et l'overhead a relativement moins d'impact dans ce cas. De l'ordre de celui observé avec le benchmark Raylib.

    Et puis j'espère bien gagner en performance, même si je suis déjà relativement content des résultats obtenus :)