21 Schrëtt fir super séier JavaScript

Auteur: Randy Alexander
Denlaod Vun Der Kreatioun: 23 Abrëll 2021
Update Datum: 20 Juni 2024
Anonim
Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges
Videospiller: Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges

Inhalt

Op den éischte Bléck kléngt parallel Veraarbechtung wéi eng Invitatioun fir e gratis Mëttegiessen - méi Multi-Core CPUe méi effizient ze benotze sollt Äre Code en enorme Geschwindegkeetsboost ginn. Praktesch Erfahrung weist datt dëst net ëmmer de Fall ass: verschidde Probleemer sinn onméiglech ze paralleliséieren. Zousätzlech dozou féiert parallel Ausféierung zu enger ganzer Famill vun neie Probleemer déi net op eenzege Kär Maschinne gesi ginn.

Parallelle Code kann am Prinzip an zwou Aarbechtsgruppen opgedeelt ginn. Déi éischt Grupp ass klassesch Geschwindegkeetserhéijung - wann Äre Programm 3000 Biller duerchsiche muss, de Job opzedeelen heescht datt méi Biller zu all Zäit veraarbecht kënne ginn. Och wann et definitiv gutt ass, gëtt dës Zort vun Aufgaben selten an der alldeeglecher Webentwécklung begéint. (Wann Dir e bildschwerge Site erstellt, gitt sécher datt Dir se mat anstännege Cloud Späichere backt).


Déi méi heefeg Form vu Paralleliséierungsaarbecht funktionnéiert ronderëm laanglaafend Aufgaben déi net vill CPU Zäit brauchen. E gutt Beispill heifir waart op en Download oder eng Aart Apparatinput: wann dëst paralleliséiert gemaach gëtt, brauch de Rescht vun der GUI net ze blockéieren. Gitt datt d'Benotzer éischter Probleemer hunn ze verstoen "firwat de Knäppchen net klickt", kann dëst zu méi Benotzerzefriddenheet féieren och wann déi aktuell Geschwindegkeet net eropgeet.

Wann Dir e puer nei Ressourcen braucht fir Iech méi coder ze hëllefen, kuckt an eisem Guide fir déi bescht Webdesign Tools vun 2019. Wann Dir de Code ganz vermeide wëllt, designt Äre Site mam beschte Websäit Builder, a gitt sécher datt Dir de gewielt hutt perfekte Webhosting Service mat eisem Guide.

01. Intervalled Ausféierung

var Schlof = erfuerderen (‘Schlof’); Funktiounsaarbechter () {console.log ("Worker up") sleep.msleep (1000) console.log ("Worker down")} setInterval (Aarbechter, 2000); wärend (1 == 1) {sleep.msleep (250) console.log ("Hallo vum Haapt")}>

Loosst eis ufänken mat engem klenge Beispill baséiert op engem gutt gefallene Favorit: den setInterval Funktioun. Et brauch eng Funktiounsreferenz an e numeresche Wäert a Millisekonnen ofgelenkt. Duerno gëtt d'Funktioun periodesch ausgeléist wann de Verspéidungstimer ofleeft.


02. Opstelle fir e Fall

npm installéiert Schlof npm example1.js

Mat der schlofen () Funktioun erfuerdert datt mir de Schlofmodul op e lokalen npm Projet lueden. Et handelt als Interface zu der Schlofbibliothéik vum Betribssystem - frot Iech net ob de Compiler vun Ärer Workstation während der Verdeelung vum Package entlooss gëtt.

03. Gefore vu Multitasking

Wann Dir dëse Programm leeft, fannt Dir Iech mat Ausgab ähnlech wéi déi an der Figur déi dëse Schrëtt begleet. Et ass evident datt eisen Aarbechter ni opgeruff gëtt - eppes muss falsch sinn mat der setInterval Funktioun.

04. Gefore vu Multitasking, 2. Deel

Modern Browser equipéieren all Tab mat engem JavaScript thread. E genauen Abléck op eis Schläif weist datt et endlos ass. Dëst bedeit datt et fir ëmmer leeft, an ni Kontroll gëtt. Gitt dat setInterval () schafft mat enger Noriicht, seng Notzlaascht gëtt ni lafe gelooss well de Messagebehandler gespaart ass.


05. Fokusséiert op Troublemakers

const bar = () => console.log ('bar') const baz = () => console.log ('baz') const foo = () => {console.log ('foo') setTimeout (bar, 0) baz ()} foo ()

De Flavio Copes säi Blog, bitt en extrem interessante Bit Code deen de Problem illustréiert. Wann se lafen, gëtt et d'Ausgab, déi an der Figur gewise gëtt wéinst der Noriichteschlau gespaart bis foo () verzicht op d'Kontroll vum Haaptfuedem.

06. Fuedem virstellen

Gitt datt de Basisliewe Betribssystem fäeg virgeschriwwe Multitasking ausféiere kann, loosst eis seng Fäegkeeten ausnotzen andeems se Threads iwwer eng speziell API mam Numm WebWorkers spannen, déi breet ënnerstëtzen. D'Figur mat dësem Schrëtt weist d'aktuell Lëscht fir d'Feature.

07. Erstellt en extra Datei

console.log ("Aarbechter seet Moien!"); console.log ("Worker up"); wärend (1 == 1) {console.log ("x"); }

WebWorkers kënnen net mat enger Funktiounsnotzlaascht starten. Amplaz ass eng nei Datei erfuerderlech déi de Code enthält fir am Fuedem ze lafen. Am Fall vun eisem Beispill, example7thread.js huet den Inhalt gewisen deen dëse Schrëtt begleet.

08. Run den Aarbechter ...

const worker = erfuerderen (‘worker_threads’); var myWorker = neien Worker.Worker (’./ example7thread.js’); var myWorker2 = neien Worker.Worker (’./ example7thread.js’);

Eisen Aarbechter ass prett fir Premier-Zäit. Spezialitéite vum Node.JS Runtime zwéngen eis den Aarbechterfuedemmodul mat anzebannen an e relativen Wee weiderzeginn - Problemer déi net am Browser konfrontéiert sinn. Ausserdeem wonnert Iech net iwwer de Start vermësst () Uruff - e Webaarbechter setzt sech of wann d'Instanz online kënnt.

09. ... a seng Resultater verstoen

Messagerie erfuerdert normalerweis eng Aart Interaktioun tëscht der Runtime an dem Rescht vum Betribssystem. Leider blockéiert eis onendlech Loop dëse Prozess - dat heescht datt nëmmen eng vun de Messagen opdaucht virum 'grousse Stand'.

10. Füügt d'Mask bäi

const worker = erfuerderen (‘worker_threads’); var myWorker = neien Worker.Worker (’./ example7thread.js’); var myWorker2 = nei Worker.Worker (’./ example7thread.js’); wärend (1 == 1) {}

En anert Experiment implizéiert eng eidel Loop no den zwou Konstruktorinvocatiounen. An dësem Fall fänken d'Fiedem ni un ze schaffen - d'Invocatiounsmeldung kënnt ni mam Betribssystem un.

11. Interprozess Kommunikatioun

Wärend Aarbechter, déi enk endlos Schläifen hunn, déi uewe genannte Probleemer hunn, kënne Routine matenee kommunizéieren. Dëst gëtt iwwer e Message passéiert Interface gemaach - denkt drun als eng Ariichtung déi Iech e Message Objet vun engem Sender un en Empfänger iwwer Thread Grenze weiderginn.

12. Firwat Message-Pass?

Zousätzlech zu de Virdeeler fir Fäegkeeten effizient ze koordinéieren (a reduzéiert Risiko vu "Kollisiounen", och bekannt als Rennbedingungen), ass d'Botschaft un den Haaptfuedem deen eenzege Wee fir mat der DOM ze interagéieren, wéinst der Schwieregkeet beim Erstelle thread-sécher GUI Stack.

13. Gitt an de Browser

Ëmsetzung vun der Noriicht, déi am Node.JS passéiert ass langweileg. Beweegt de Code op de Web - fänkt u mat der Erstellung vun engem HTML-Harn deen eropgeluede gëtt examplempi.js. Bedenkt datt dëse Code nëmme vun engem localhost Webserver ausgefouert ka ginn wéinst DOM Hierkonft Restriktiounen.

14. Setzt eng Mailbox op ...

var myWorker = nei Aarbechter ('./ examplempithread.js'); var myWorker2 = neien Aarbechter (’./ examplempithread.js’); myWorker.onmessage = Funktioun (e) {console.log (e); } myWorker2.onmessage = Funktioun (e) {console.log (e); }

All Aarbechter weist eng Onmessage Propriétéit aus, déi eng Funktiounsreferenz ophuelt, déi ugeruff muss ginn, wann e Message aus dem aneren Enn erauskënnt. Entréeën Messagen ginn einfach un d'Konsole vum Browser weidergeleet vum Haaptthread.

15. ... a fiddert et vum Aarbechter

postMessage ("Aarbechter seet Moien!"); postMessage ("Worker up"); wärend (1 == 1) {postMessage ("x"); }

Messagen an eng Mailbox schécken ass erreecht andeems Dir d'Post Message Funktioun oprufft. Denkt drun datt en Aarbechter och en implementéiere kann Onmessage Event, wat Informatioune ka kréien aus wien deen 'Aarbechterinstanz Objet' besëtzt '.

16. Kick et lass ...

Zu dësem Zäitpunkt ass de Code fäerdeg ze lafen. D'Entwéckler Konsol ass net mat Messagen iwwerschwemmt wéinst der héijer Effizienz vun der MPI Interface, dat heescht Daten kënnen effizient ronderëm de System reesen.

17. Async a waart

D'Microsoft Zousaz vun der async an erwaart Schlësselwierder huet d'Geschicht vu C # a VisualBasic.Net geännert. Prinzipiell gëtt eng Method markéiert async zesumme mam Rescht vum Programm ausgefouert. Resultater kënnen dann iwwer d'Waardenfunktioun gesammelt ginn.

18. Ersetzt eise Schlof

const Schlof = (Millisekonnen) => {Neies Verspriechen zréck (léisen => setTimeout (léisen, Millisekonnen))}

Entscheet datt Browser ënner schaarfen Aschränkunge sinn, wann et drëm geet Zougang zu natierleche Funktiounen ze kréien, kënne mir déi virdru genannte Schloffunktioun net weiderbenotzen. Et ass och suboptimal datt et déi ganz Node.JS Runtime gestoppt huet. De Snippet deen dëse Schrëtt begleet bitt eng méi effektiv Approche.

19. De Code verstoen ...

Dëse Code bréngt e Verspriechen Objet zréck - et ass eng aner Komfortklass déi dem Java Skript bäigefüügt ass fir e Multithreading méi einfach ze maachen. Dir musst seng Léisungsmethod via a beruffen setTimeout, suergt datt de Code zimlech vill 'Zäit' muss 'sëtzen'.

20. ... an en iergendwou asetzen

Waarden Uriff sinn nëmme bannent async Funktiounen erlaabt. Dëst bedeit datt den Aarbechter eng nei Schreiwe brauch - fänke mat engem async Träger Funktioun un. Et handelt de Rescht vun der Code Interaktioun.

const Schlof = (Millisekonnen) => {Neies verspriechen zréck (léisen => setTimeout (léisen, Millisekonnen))} postMessage ("Aarbechter seet Moien!"); postMessage ("Worker up"); Aarbechter () async Funktioun Aarbechter () {wärend (1 == 1) {postMessage ("x"); Schlof ofwaarden (1000); }}

21. Benotzt d'Kraaft vum Heemechts!

Entwéckler déi um Node.JS Code schaffen däerfen net vergiessen datt se kënnen - normalerweis - och komplett natierlech Moduler erstellen wann extrem héich Leeschtung gebraucht gëtt. Dës kënnen net nëmme vu verschiddene Betribssystem-APIen profitéieren, awer och a Programméierungssprooche geschriwwe ginn, déi mam Maschinnekode kompiléieren.

Dësen Artikel gouf ursprénglech an der Ausgab 291 vum kreativen Webdesign Magazin publizéiert Web Designer. Kaaft Ausgab 291.

Gitt Sécher Ze Kucken
nett Auszeechnunge 2015: Nominatiounen Enn an zwee Deeg
Liest Méi

nett Auszeechnunge 2015: Nominatiounen Enn an zwee Deeg

D'Nominéierung pha e vun den Net Award vun dë em Joer wäert den 19. Abrëll ophalen. Dë t bedeit datt Dir nëmmen zwee Deeg nach hutt fir d'Leit, Projeten an Techno...
3 Top Tipps fir Spaass a Frësch ze illustréieren
Liest Méi

3 Top Tipps fir Spaass a Frësch ze illustréieren

Al Kën chtler ze chaffen kann de paa au dem Zeechnen augen an hee chen datt Dir an Ärer Fräizäit illu tréiere kann wéi eng Aarbecht. Hei aachtfach Hugo au gezeechent K...
Déi bescht Monitore fir PS5: Upgrade Äert Display mat engem iwwerraschenden neien Ecran
Liest Méi

Déi bescht Monitore fir PS5: Upgrade Äert Display mat engem iwwerraschenden neien Ecran

Dir icht déi be cht Monitore fir P 5? Déi le cht pillkon ole vu ony huet iwwerra chend 4K Grafiken. Fir dat Be cht drau ze maachen, braucht Dir e Monitor dee bi zum Job a .Et gëtt kee B...