Je prévois d'écrire un plug-in interactif de traitement de géométrie C++ qui triera fréquemment de grandes quantités de données. Bien que les indications préliminaires indiquent que le tri ne prendra qu'une seconde ou deux, je préférerais montrer des progrès pendant cette période - c'est-à-dire que je voudrais mettre à jour un indicateur de progression plusieurs fois par seconde. Cela serait préférable d'allumer un curseur d'attente et de laisser l'utilisateur avec un programme qui se fige pendant une durée indéterminée (même s'il ne s'agit que de quelques secondes). Si j'utilisais quelque chose comme std :: sort, je pourrais utiliser la fonction de comparaison pour mettre à jour l'indicateur de progression de temps en temps, mais je n'aurais aucune idée de 'pourcentage terminé'. Je pourrais aussi décomposer le tri en sous-sortes, en mettant à jour la progression entre les sous-sortes, puis en fusionnant. Mon meilleur pari peut être d'écrire sa propre méthode de tri, bien que je ne sache pas combien d'effort il faudrait pour obtenir une performance aussi bonne que std :: sort (et assurer la correction). Dans tous les cas, cette méthode de tri envoie parfois un "pourcentage complet" à une méthode de rappel. Je me demandais si d'autres personnes avaient rencontré et résolu ce problème - j'espère qu'il y a peut-être une méthode de tri dans une bibliothèque standard qui fait ce que je veux, ou une autre technique à laquelle je n'ai pas pensé.Comment surveiller/afficher la progression pendant un tri C++
Mise à jour: Merci pour les bonnes réponses jusqu'à présent. Il y a eu quelques très bonnes suggestions, et je vais arrêter de choisir la réponse acceptée jusqu'à ce que j'aie eu la chance de tester les idées dans mon projet à venir.
Mise à jour 2: J'ai terminé mon projet, et cela s'est avéré être un non-problème (au moins pour le client.) Étant donné qu'ils vendront le logiciel, ils recevront peut-être des commentaires de leurs clients. leurs esprits à ce sujet). Choisir une réponse acceptée était difficile parce qu'il y avait beaucoup de bonnes réponses, mais à la fin, celui que j'ai choisi indiquait un article wiki sur Merge Sort qui avait une animation très évocatrice. Donc, c'est la première stratégie que j'aurais poursuivie si j'avais eu besoin d'aller de l'avant avec ça).
Personnellement, je ne voudrais pas ajouter une fonctionnalité comme celle-ci jusqu'à ce que la performance réelle du tri est observée. Sinon, il s'attaque à un problème qui pourrait ne pas exister. Vous pouvez également suivre la route simple et afficher "Tri ..." dans une sorte de contrôle de texte de journal ou une barre d'état. – Reinderien
@Reinderien: d'accord, si ce n'est pas cassé ne le répare pas. Mais j'essaie de penser à l'avance à ce sujet. Et mon expérience dans le traitement des graphiques 3D et de la géométrie est que les utilisateurs vont facilement étouffer n'importe quoi avec des modèles et des données plus grands que ce dont vous avez toujours rêvé. – brainjam