• [^] # Re: templates variadiques

    Posté par . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 9.

    Le truc c'est qu'il faut comparer ce qui est comparable. Si tu remplaces un GC complet par des smart pointers tu vas clairement perdre en performances.

    Les smart pointers ne sont absolument pas fait pour gérer tous les pointeurs d'un programme à la manière d'un langage à GC. Ils servent à gérer les quelques pointeurs au sein de l'application ou c'est pratique. Plus la proportion de pointeurs que tu veux gérer de cette manière est grande, moins les perfs seront compétitives.

    Le C++ est un langage fait pour la gestion manuelle de la mémoire avec des outils pour qu'elle soit automatique de temps en temps, et dans ce cas les smart pointeurs sont beaucoup plus efficace car cela donne un outils simple et efficace beaucoup moins lourd qu'un GC complet.
    Si tu utilise de manière systématique les smart pointers, le problème est plus que le langage choisit n'est pas le bon.

    Pour ce qui est de la latence, les algos incrémentaux sont intéressant, mais ils viennent avec un prix : ils sont très complexes à mettre en œuvre, ils demandent beaucoup de coordination avec le runtime, et beaucoup de tuning de paramètres pour être vraiment efficaces. Un petit changement anodin peu faire tout écrouler.

    Pour la défragmentation dans linux, je ne suis jamais aller voir ce qui ce faisait exactement, mais on est dans le cas d'une tâche bien définie ou typiquement la fréquence d'utilisation des objets est très grande et ou la collection est peu fréquente. Si tu as besoin de quelques huges pages, ton algo ne va tourner que le temps d'avoir ces pages et jamais faire de cycle complet.
    Dans un cas comme celui là, tu peux généralement choisir des algos à priori complexes mais qui en fait deviennent très simple car il n'y a qu'un seul type d'objets avec un comportement extrêmement simple.