Big O and Scalability
Ein kostenloses Video-Tutorial von Andrei Neagoie
Founder of zerotomastery.io
15 Kurse
1.383.444 Teilnehmer:innen
Steige mit dem kompletten Kurs tiefer ins Thema ein
Master the Coding Interview: Data Structures + Algorithms
Ultimate coding interview bootcamp. Get more job offers, negotiate a raise: Everything you need to get the job you want!
19:40:20 On-Demand-Video • Aktualisiert am Oktober 2026
Ace coding interviews given by some of the top tech companies
Become more confident and prepared for your next coding interview
Learn, implement, and use different Data Structures
Learn, implement and use different Algorithms
Get more interviews
Professionally handle offers and negotiate raises
Become a better developer by mastering computer science fundamentals
Github code provided in: JavaScript, Python, Java, C/C++, C#, Golang, Swift, Kotlin, TypeScript, Scala, Rust, Perl, PHP
Deutsch [autom.]
Willkommen zurück. Lassen Sie uns unsere Diskussion darüber fortsetzen, was diese skalierbare Idee bedeutet. Sie erinnern sich, dass wir über die Küche gesprochen haben und wie ähnlich wir einer Küche Anweisungen geben müssen, um ein Ergebnis zu erzielen. Und im vorherigen Video haben wir über Funktionsstörungen bei der Suche nach Nemo gesprochen. Lassen Sie uns die Leistung dieser Funktion messen. Nun, Javascript gibt uns ein hübsches kleines Tool, das in den Browser integriert ist, in dem wir diesen Code ausführen. Abhängig von Ihrer Sprache haben Sie diese Option möglicherweise nicht, aber Sie haben verschiedene Möglichkeiten, dies zu messen. Lass dich nicht zu sehr darauf ein. Wir möchten dies als Beispiel verwenden, um zu messen, wie lange es dauert, bis diese Funktion ausgeführt wird. Wir können dies in Javascript tun, indem wir sagen, dass Zeit 0 der Leistung entspricht, die in den Browser integriert ist. Und wir sagen nur, jetzt addiere dies zu Null, um diesen Timer zu starten, bevor die Schleife passiert. Und wenn die Schleife endet, werde ich einen weiteren Timer namens T-1 haben, der jetzt den Leistungspunkten entspricht. Wir haben also zwei Timer, einen am Anfang und einen am Ende, nachdem die Funktion die Schleife durchlaufen hat, um Nimo zu finden. Am Ende führen wir einfach einen lustigen kleinen Konsolendialog durch und sagen, dass der Aufruf zum Auffinden von Nemo gedauert hat und kann einfach einen einfachen Tiran minus Null machen und dann werden wir Millisekunden sagen, weil es uns die Ergebnisse und Millisekunden geben wird. Wir werden sehen, ob dies funktioniert. Ich möchte diesen Code ausführen und mir hier ein Leerzeichen lassen, und wir sehen, dass es null Millisekunden gedauert hat, bis dieser Code ausgeführt wurde. Lassen Sie mich das noch einmal null Sekunden wieder null Sekunden null Sekunden laufen. Und wenn ich weiter darauf klicke, sehe ich, dass es jetzt etwas länger dauert. Und das liegt daran, dass das wirklich schnell geht. Sind Computer Maschinen sind heutzutage extrem schnell und weil wir dies nur einmal gut durchlaufen, dauert es fast null Millisekunden und das Display nur rund System. Aber was wäre, wenn wir ein größeres Array hätten? Nehmen wir an, wir haben hier ein Array, das jeden gekostet hat und alle Charaktere oder zumindest viele Charaktere aus dem Film Finding Nemo enthält, die Sie nicht gesehen haben. Fantastischer Film. Ich kann es nur empfehlen. Wie auch immer, wir sehen, dass wir jetzt viel mehr Charaktere haben. Anstatt nur ein einziges Array zu haben, haben wir das Array alle hier und dieses Array hat jetzt viel mehr Elemente. Es hat eins, zwei, vier, fünf, sechs, sieben, acht, zehn, das sind zehn Schleifen, die wir hier machen werden, wenn wir laufen Dies. Wir sehen, dass die Zeit immer noch dieselbe ist. Ziemlich null Millisekunden. Manchmal ein bisschen mehr und die Zeit ändert sich ständig. Aber wir sehen keinen so großen Unterschied, oder? Ich meine, wir sind von einer Schleife auf jetzt 10 Schleifen gelaufen, aber es ist immer noch super super schnell. Und das liegt auch daran, dass unsere Computer heutzutage ziemlich schnell sind. Der Unterschied zwischen einer Schleife und 10 Schleifen ist nicht so groß. Aber lassen Sie uns hier in Javascript einen kleinen lustigen Trick machen, mit dem wir ein großes Array erstellen können. Nennen wir es einfach groß und wir können ein massives Array erstellen, indem wir einfach neues Array sagen. Und wir geben ihm hundert Gegenstände und diese hundert Gegenstände im Array, mit denen wir es füllen können, sagen wir Nimo, und dies wird nur ein Array erstellen, das hundertmal Nimo hat wir sehen hier, dass es Nimo hundertmal gefunden hat, weil wir es dort nur mit dem Nimo füllen und unten sehen wir, dass es Punkt fünf Moli Sekunden gedauert hat, was viel länger gedauert hat. Dinant lass uns noch größer machen. Lassen Sie uns tausend Treffer machen. Ron brauchte 7 Millisekunden. Was ist, wenn Sie sie größer machen? Was wäre, wenn wir eine riesige Auswahl von 10000 hätten? Wir hatten 46 Meli Sekunden gelaufen. Es ist immer noch ziemlich schnell. Und dann nur noch zum Spaß noch einen. Wenn ich gelaufen wäre, hätten Sie diese Verzögerung gesehen und wie lange das gedauert hat, dreiundvierzig Millisekunden oder drei Punkte vier Sekunden, was sehen wir jetzt hier? Nun, wir sehen, dass Nemo mit zunehmender Eingabe unserer Funktion immer langsamer und langsamer wurde. Unsere Laufzeit, wie lange es dauert, ein bestimmtes Problem durch eine Funktion auszuführen, hat sich erhöht. Aber hier ist das Problem. Wenn Sie diesen Code nehmen und auf Ihrem Computer ausführen, während Ihre Zeit anders sein wird als meine. Und ich werde diesen Code am Ende dieses Videos belassen, damit Sie damit herumspielen können. Sie werden frustriert sein, weil jedes Mal, wenn Sie diesen Code verwenden, sich von meiner Nummer unterscheidet. Es könnte viel schneller, viel langsamer sein. Sie sehen, das hängt alles davon ab, wie mächtig das C. P. P. Sie im Computer sind und welche anderen Programme auf Ihren Computerprogrammiersprachen ausgeführt werden, die Sie verwenden, und viele andere Faktoren. All diese Faktoren spielen hier in unserer Laufzeit eine Rolle. Wenn ich meinen Freund auf der ganzen Welt beschleunige, nennen wir ihn Johnny und ich sage ihm, Hey Johnny, mein Code ist so erstaunlich, dass ich diese feine Nimo-Funktion erstellt habe und sie in drei Sekunden ausgeführt wird 3. 2 Sekunden mit hunderttausend Eingaben. Wie gut von einem Viertel bin ich. Und dann sagt Johnny Ha, das ist wirklich großartig. Aber weißt du was. Meins läuft viel schneller in 1. 5 Sekunden. Also ging ich. Was denkst du, glaubst du, dass Johnny gewinnt? Hat Johnny einen besseren Code als ich? Nun, hier ist die Sache. Nicht unbedingt. Das bedeutet nicht wirklich viel. Weil es darauf ankommt, welcher Computertyp Johnny welche anderen Faktoren hat. Wie ich bereits erwähnt habe, läuft der Code ein. Wie können wir also feststellen, wer gewinnt? Gewinne ich oder gewinnt Johnny? Wer hat einen besseren Trainer. Und das ist in der Computerwelt sehr verbreitet. Wir codieren auf unseren Laptops unsere Computer, aber dieser Code muss nicht unbedingt auf diesen Geräten ausgeführt werden. Wenn wir so etwas wie einen Server haben, wird dieser Code möglicherweise irgendwo anders auf einem anderen Computer auf der ganzen Welt ausgeführt. Wie können wir also sicherstellen, dass wir in Bezug auf die Effizienz messen können, was guter und was schlechter Code ist und welcher Code dies skalieren kann, wenn die Anzahl der Arrays oder Eingaben zunimmt? Es verlangsamt sich nicht ständig mehr und mehr Die Big-O-Notation ist die Sprache, in der wir darüber sprechen, wie lange die Ausführung eines Algorithmus dauert. Wir können zwei verschiedene Algorithmen oder in diesem Fall Funktionen mit Big-O vergleichen und sagen, welcher in Bezug auf die Skalierung besser ist als der andere, unabhängig von unseren Computerunterschieden. Und wir können eine große Show wie diese messen. Ich werde Sie warnen, dass dies zunächst sehr verwirrend aussehen wird. Und dies ist das erste Mal, dass wir dieses Diagramm sehen. Und keine Sorge, am Ende dieses Abschnitts wird dies Sinn machen und Sie werden dies vollständig fließend beherrschen. Also vertrau mir und dem. Folgen Sie diesen Videos weiter. Ich weiß, dass ich mich um das Thema drehe und nicht darauf hingewiesen werde, was es bedeutet, aber ich verspreche Ihnen, dass dies am Ende alles Sinn machen wird und Sie ein großer Ninja sein werden. Wenn wir über Big-O und Skalierbarkeit von Code sprechen, meinen wir einfach, wenn wir mit unserer Eingabe immer größer werden. Um wie viel verlangsamt sich der Algorithmus oder die Funktion. Wenn die Liste der Zeichen hier Elemente sagt, also Nimo, also Zeichen beim Finden von Nemo in unserem Array, da dies die Anzahl der weiteren Operationen erhöht, die wir ausführen müssen. Das ist alles was es ist. Dies ist das, was wir als algorithmische Effizienz bezeichnen. Big-O ermöglicht es uns, dieses Konzept zu erklären. Denken Sie daran, wie wir in unserer Funktion anfangs nur ein Array hatten, das Nimo war. Das ist also die Anzahl der Elemente. Anzahl der Eingänge in einer Funktion. Es war genau hier. Aber dann, wenn wir dieses Array vergrößern, um mehr Zeichen zu haben, haben wir dieses massive Array von 100000 erstellt. Mit zunehmender Anzahl haben Sie gesehen, dass die Anzahl der Operationen oder die Anzahl der Dinge, die wir in der Schleife ausführen, immer wieder zunimmt und verschiedene Funktionen unterschiedliche Big-O-Komplexitäten aufweisen. Das heißt, diese Anzahl von Operationen kann sehr, sehr schnell zunehmen, wie diese, die nicht gut ist. Sie können hier sehen, dass es schrecklich ist und Dinge, die eigentlich ganz gut sind und nicht so stark zunehmen. Und wir werden uns Beispiele für verschiedene ansehen und wie man dies tatsächlich misst und was diese gesamte Notation bedeutet, aber dieses Video beenden, damit wir tiefer in das Thema eintauchen können. Denken Sie an dieser Stelle daran, wenn wir über Big O und Skalierbarkeit von Code sprechen, meinen wir einfach, wenn wir mit unserer Eingabe immer größer werden. Um wie viel verlangsamt sich der Algorithmus, je weniger er verlangsamt oder je langsamer er wird, desto besser ist er. Anstatt die jetzt durchgeführte Leistung und die Zeit zur Messung der Effizienz unserer Funktion zu verwenden, können wir einfach berechnen, wie viele Vorgänge ein Computer ausführen muss, da jeder Vorgang Zeit auf einem Computer benötigt. Eine so große Show erlaubt es uns und beschäftigt uns damit, wie viele Schritte eine Funktion benötigt. In Ordnung, lassen Sie uns tiefer und tiefer in dieses Thema eintauchen. Ich werde im nächsten Video Bebai sehen.