Cela dépendra du contexte.
"Correction d'un bogue de performance d'exécution quadratique" est généralement ce que je vois. Cependant, la question de savoir si cela mérite d'être corrigé (un changement de code) dépend du contexte.
Gardez à l'esprit que les bases de données fournissent de nombreux outils pour améliorer la complexité du temps. Par exemple, pour obtenir les meilleurs résultats N d'une base de données, dites-le simplement. Lors de la conversion de kludge inefficace en appel optimisé intégré, l'explication semble superflue.
La raison pour laquelle je considère qu'un algorithme avec une exécution quadratique mérite une révision de code (discussion) n'est pas tant parce qu'il est lent (lent est relatif; quadratique est rapide par rapport à exponentiel), mais parce que l'intuition humaine (comme vos clients, ou collègues programmeurs) sont intrinsèquement mal à l'aise avec une fonctionnalité logicielle qui s'écarte trop loin de l'exécution linéaire, en raison du mélange des attentes de la vie quotidienne.
De nombreuses plaintes des clients concernant les performances des logiciels entrent dans ces deux catégories:
L'ensemble du système (logiciel et matériel) a été spécifié en fonction de l'utilisation estimée. La semaine dernière, tout se passe bien, une certaine fonctionnalité a pris moins de 5 secondes. Cette semaine, après l'installation d'une mise à jour, la même fonctionnalité prend plus d'une minute.
- Il s'agit d'une comparaison avec une performance précédemment référencée. Le client maintient les performances futures à l'aune absolue d'une échelle de temps humaine (de la seconde à la minute).
J'ai soumis 100 emplois au système. Pourquoi cela prend-il 400 fois plus de temps à traiter que le temps nécessaire pour un seul travail?
- Le client s'attend à ce que le temps de traitement soit linéaire. En fait, le client ne peut pas comprendre ou accepter qu'il existe des tâches plus lentes que linéaires.
Pour cette raison, un client considérera le temps d'exécution comme un bug si les deux sont vrais:
- Plus lent que linéaire
- Remarquable (c.-à-d. Se situe dans la plage de temps humain (plus de secondes ou de minutes) compte tenu des tailles de tâches typiques)
Arguments légitimes qui expliquent qu'un algorithme d'exécution quadratique ne pose pas de problème (c'est-à-dire qu'il ne mérite pas de changement de code):
- La taille de la tâche généralement gérée par cette fonction d'exécution quadratique est quelque peu limitée
- Compte tenu de la plage de taille typique, le temps d'exécution réel (absolu) est encore suffisamment petit pour être ignoré
- Si un utilisateur essaie réellement de soumettre une tâche suffisamment volumineuse pour être visible, l'utilisateur recevra un message d'avertissement sur le long temps d'exécution
- Les utilisateurs du système sont tous des experts, ils savent donc ce qu'ils font. Par exemple, les utilisateurs d'une API doivent avoir lu les petits caractères de la documentation de l'API.
Beaucoup d'algorithmes utiles pour le développement d'applications typiques sont en fait plus lents que linéaires (principalement O (N log N), comme dans le tri), donc les logiciels à grande échelle essaieront en fait de contourner cela, en ne triant que la partie pertinente du des données, ou utiliser des techniques de filtrage histologique (statistique) qui produisent un effet similaire.
Cela s'applique aux clients logiciels, mais si vous considérez que les utilisateurs d'une bibliothèque de logiciels ou d'une fonction API sont également des "clients", la réponse s'applique toujours.