Dans le cas général, la complexité asymptotique d'un algorithme arbitraire est indécidable, par Rice's theorem.
Mais en pratique, vous pouvez souvent faire une bonne estimation en exécutant plusieurs fois l'algorithme sur diverses entrées (de tailles de plusieurs ordres de grandeur), en enregistrant le temps CPU réel et en ajustant une courbe. (Vous devriez jeter des points de données avec des temps d'exécution très courts, car ceux-ci seront dominés par le bruit.En outre, sur les runtimes JITed comme la machine virtuelle Java, assurez-vous d'exécuter la fonction pendant un moment avant de commencer la synchronisation. s'est échauffé.)
Intéressant ... Je ne connais aucun outil capable de calculer le Big-O d'un morceau de code. Je ne suis pas sûr que de telles choses existent (ou sont même possibles), mais s'il y en a, je serais intéressé de les voir. – FrustratedWithFormsDesigner
Par exemple, si les concepteurs de langage documenteraient big-0 pour les opérations atomiques, cela pourrait être possible. Ou si vous avez une méthode avec certains params (collections) que le test unitaire peut être exécuté et la durée du journal de l'exécution de la méthode avec une longueur de collecte différente. C'est ainsi que O peut être calculé. – Jeriho