• [^] # Re: Ah! Nagios....

    Posté par . En réponse à la dépêche Nagios 3.0. Évalué à 3.

    > Sachant que chacun de ces appels de fonctions entraine un contexte switch, cad des cycles de pénalités (j'ai plus le chiffres en tete, mais beaucoup).


    Prends garde à pas tout mélanger non plus. Un appel de fonction, c'est effectivement quelques opérations :

    1) 'push' des parametres et du pointeur de retour sur la pile d'appel
    2) 'jump' vers le code de la fonction
    3) 'pop' des parametres
    4) execution du code de la fonction
    5) 'jump' vers le pointeur de retour

    Mais rien de monstrueux sauf, quand c'est une fonction très courte appelée très souvent auquel cas l'overhead est grand et on peut utiliser l'inlining (copie du code de la fonction).

    Rien a voir avec un 'context-switch', qui est une opération effectuée par le noyau et qui consiste en sauver le contexte d'exécution quelque part (registres, pointeur d'instruction courant etc...) et de le remplacer par un autre. Ce qui arrive dans 2 cas (en gros) :
    - changement de tache par l'ordonnanceur
    - appel système (passage du mode utilisateur au mode noyau)

    Et un context switch est effectivement très gourmand, par rapport a un appel de fonction en tout cas ;-).

    Comme le dis très justement quelqu'un plus bas, passer 270000 paramètres sur la ligne de commande ce n'est pas "optimisé", loin de là (par rapport a ce qu'on a vu plus haut, ca fait 270000 push et pop) par rapport a un passage sur la pile d'un ptr vers une structure pré-remplie.