Optimisation de code OCaml

Cette formation a été conçue par OCamlPro pour permettre aux développeurs OCaml de tirer la performance maximale des applications qu'ils écrivent. Basée sur l'implication directe de notre équipe dans le développement du compilateur OCaml, cette formation montre comment écrire le code pour qu'il soit optimisé au maximum, et comment utiliser au mieux toutes les optimisations fournies par le compilateur OCaml.

Besoin Métier

Vous faites partie d'une équipe de développement d'une application OCaml et vous devez améliorer nettement les performances de cette application.

Programme de la formation

Base sur les performances des architectures moderne

  • Rapides bases d'assembleur (pour les exemples suivant)
  • Architecture: Hiérarchie de mémoire/cache, Out-of-order, Prédiction, Effet des cache d'instructions décodée
  • Conséquences: Interpreter les résultats des outils de sampling d'instruction (perf), Interpreter les microbench
  • Système d'exploitation et appels système: Ce qui est cher, Ce qui est bloquant

Runtime de OCaml

  • Cours assez exhaustif du fonctionnement du GC
  • Coût des différentes parties du GC: algorithmiques pire et moyen, effets inhabituels, Cas d'exemple d'effets inattendus
  • FFI (partie pertinente pour les perf): Allocations/invariants, Annotations [@...] / boxing, Racines

Compilateur OCaml

  • Architecture: Suivre les transformations des différentes constructions à travers les passes
  • Coût des constructions du langage
  • Tour guidé des optimisations
  • Différences avec les compilateur/runtime C-like

Outils

  • perf et outils dérivés
  • Faire correctement des benchmarks: Analyser quel type de performances est recherché (vitesse/latence (moyenne/pire) ... ), Analyser des statistiques de bench, Bench de non-régression
  • Valgrind/callgrind/cachegrind...
  • Le debugger gdb

Approches pour agir sur les performances

  • Utiliser les optimisations / choisir des structures de code adaptées: Contrôler les optimisations, Vérifier qu'elles s'appliquent
  • Traduire des parties en C-like: Analyser la pertinence, Utiliser efficacement la FFI
  • Trouver, reconnaître et corriger des anti pattern
  • Corriger des fuites mémoire et sur allocations: Réduire des lifetimes, Liste des types de fuites

Organiser l'optimisation d'un projet

  • Estimer quels sont les performances atteignable pour un programme: Segmenter le programme et séparer l'analyse, Comparer avec la réalité
  • Trouver ce qui a un sens à optimiser: Prioriser les choses les plus utiles, Quoi ne pas optimiser

Algo et structures de données pertinentes / non pertinentes en OCaml

OCamlPro

OCamlPro est un bureau d'étude en développement logiciel, créé en 2011 et fort de plus de 20 ingénieurs R&D, avec une expertise unique sur les langages de programmation, aussi bien théorique (plus de 80% de nos ingénieurs ont une thèse en informatique), pratique (participation active au développement de plusieurs compilateurs open-source, prototypage de la blockchain Tezos, etc.), diversifiée (Rust, OCaml, Cobol, Python, Scilab, etc.) et appliquée à de multiples domaines (méthodes formelles, cybersécurité, systèmes distribués, finance, etc.).

Prochaines sessions

    Sessions organisées sur demande.

Optimisation de code OCaml

Durée: 2 jours Prix: 2000 EUR/pers. HT Pratique: 50%
Prérequis
  • OCaml
  • Computers
Public
  • Développeurs
Objectifs Pédagogiques
  • Comprendre le fonctionnement du runtime OCaml
  • Comprendre les optimisations possibles par les compilateurs OCaml et Flambda2
  • Maîtriser les outils pour mesurer les performances d’un programme
  • Tirer les meilleures performances d’un programme OCaml
  • Choisir ce qui doit être optimisé pour être efficace
Indicateurs de résultats
  • Note de satisfaction moyenne: 18.5/20
  • Taux de réussite: 100%

Version: 14 novembre 2022

Pierre Chambart (OCaml)

Pierre est ingénieur R&D chez OCamlPro depuis 2013, après une thèse de doctorat en méthodes formelles et un post-doc sur la programmation web en OCaml. Pierre est membre de la coreteam du compilateur OCaml, spécialisé dans la génération de code optimisé. Pierre est aussi l'un des développeurs principaux de la blockchain Tezos en OCaml.

Vincent Laviron (OCaml)

Vincent est ingénieur R&D chez OCamlPro depuis 2015. Après avoir travaillé sur l'adaptation de techniques d'interprétation abstraite à OCaml, Vincent a rejoint l'équipe travaillant sur Flambda, le compilateur optimisant pour OCaml, et aujourd'hui membre de la coreteam du compilateur OCaml.

Informations pratiques

Contact

Vous pouvez nous contacter par le formulaire en haut de page de chaque formation, ou par mail à contact@ocamlpro.com.

Délais d'accès

Nos formations sont organisées à la demande, dans les deux mois suivant la prise de contact. En cas de personnalisation, le délai d'organisation peut être étendu en conséquence, comme négocié au préalable avec les participants.

Modalités d'inscription et déroulement

Nos formations peuvent être réalisées en présentiel ou à distance.

Avant la formation

  • Entretien ou questionnaire pour identifier les attentes et besoins.
  • Envoi des éléments administratifs : convention, livret d’accueil et règlement intérieur.
  • Envoi des ressources et des instructions pour le bon déroulement de la séance.

Pendant la formation

  • Le stagiaire se présente à la formation avec son ordinateur personnel.
  • Les horaires pour nos formations inter-entreprises in-situ sont :
    • Début de la formation - 9h30
    • Pause déjeuner - 12h à 13h
    • Fin de la formation - 17h30
  • Évaluation tout au long de la formation (mise en situation, quiz, interrogation)

A la fin de la formation

  • Remise d’une attestation de formation
  • Questionnaire d’auto-évaluation
  • Questionnaire de satisfaction permettant d’évaluer la formation

Après la formation

  • Questionnaire de satisfaction à froid (à 3 mois de la formation)

Méthodes mobilisées et modalités d'évaluation

Nos formations s'effectuent par groupes d'au plus 10 personnes, avec un ou deux formateurs en fonction de la quantité d'ateliers pratiques inclus dans la formation.

En fonction du niveau des apprenants et de la taille du groupe, plusieurs modalités pédagogiques peuvent être mises en place : ateliers avec exercices pratiques, discussions guidées, le développement collaboratif, etc.

Les formations peuvent inclure des projets à développer en autonomie, avec l'objectif de consolider les connaissances apprises.

Les ressources pédagogiques sont produites par l'équipes OCamlPro en vue des formations. Les documents sont généralement en anglais, mais peuvent être traduits en français à la demande.

L'évaluation des acquis de la formation se fera en séance au travers d'ateliers, d'exercices et/ou de travaux pratiques.

Accessibilité, handicap

Pour toutes nos formations, nous réalisons des études préalables à la formation pour adapter les locaux, les modalités pédagogiques et l’animation de la formation en fonction de la situation de handicap annoncée. Nous sommes à votre écoute pour toute question ou besoin spécifique, contactez-nous à contact@ocamlpro.com

Prises en charge OPCO et CPF

La prise en charge OPCO est possible : OCamlPro a reçu la certification Qualiopi. Les deux conditions suivantes devront alors être réunies :

  • la prise en charge doit être totale et couvrir l’ensemble du coût de la formation
  • l’accord de prise en charge doit nous parvenir au plus tard 5 jours avant la session de formation

Nos formations ne sont pas qualifiantes ni certifiantes, et ne peuvent donc être prises en charge par le CPF.