Ja.
Im Allgemeinen ist die Komplexität offensichtlich genug für Serviettendarstellungen, und das ist gut für die Entwicklung, bis ich an den Punkt komme, an dem ich die Leistung messen muss. In vielen Fällen ist der Abschnitt, um den ich mir Sorgen gemacht habe, in Ordnung (dh, die Schätzung der Serviette war gut genug) und etwas anderes verlangsamt die Software. In fast allen Fällen lohnt es sich, mit meinen Grundannahmen zu gehen und später die Leistung zu messen.
Wenn ich jedoch sehr zeitkritischen Code mache, insbesondere im Grafik-Rendering, setze ich mich hin und ermittle die Komplexität des Algorithmus und die damit verbundenen Kompromisse auf eine andere Art und Weise.
Heute arbeite ich mit jemand anderem Code und es ist schrecklich langsam. Es interessiert mich nicht wirklich - es kann 10 Minuten dauern, bis alles, was für den gesamten Prozess wichtig ist, verbessert wird. Aber ich musste mir den Code ansehen, um einen Fehler zu beheben, und diese Person hat Schleifen innerhalb von Schleifen innerhalb von Schleifen, die meisten von ihnen durchsuchen die gleiche Liste jedes Mal auf die gleiche Weise für ein anderes Element. Im Grunde ist er ein schönes arrayfunction geändert, sagen func (i) {return Datensätze [i];} in eine schreckliche Suchroutine:
func(i)
{
for each index in records
if i==index return records[index]
next
}
Die Realität ist viel schlimmer, aber Sie bekommen die Idee.
Der Grund, warum Sie dies jetzt in der Schule lernen, ist, dass Sie diese Strukturen sehen und automatisch kategorisieren können. Du wirst wahrscheinlich nicht wirklich Computer brauchen oder es auf eine nette, ordentliche Komplexitätszahl reduzieren, aber wenn du es jetzt nicht mit der Hand machst und viel davon siehst, wirst du auch Code wie diesen produzieren und du wirst es einfach tun keine Ahnung haben.
-Adam
Hast du ein Beispiel für das SQL, das du erwähnst? Weil Joins mit Indizes und Unterabfragen ungefähr gleichwertig sind (oft wird eines mit dem anderen implementiert) – Javier
Ich dachte nicht wirklich an ein bestimmtes Beispiel, nur an den allgemeinen Prozess. – tvanfosson
Mit SQL könnte es so einfach sein, zu bemerken, dass das Hinzufügen eines Index es erlauben würde, einen anderen Algorithmus zu verwenden, der effizienter wäre. – tvanfosson