2010-04-26 18 views
3

C'est une bonne idée d'avoir des informations impotantes pendant le développement comme la notation de Landau pour connaître les coûts de temps des fonctions. Donc, il devrait être documenté dans les sources n'est-ce pas?Notation de Landau (ide) support d'outils

Je cherche des outils qui peuvent le calculer.

+1

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

+0

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

Répondre

3

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é.)