Shtesa falas e Chrome - ndërprerje në pajisje

Bazat e përpunimit të imazhit të Punëtorëve të Uebit

Një Web Worker është një kontekst i veçantë i ekzekutimit të JavaScript që mund të kryejë llogaritje të shtrenjta pa bërë që filli kryesor i redaktorit të bëjë të gjithë punën. Për përpunimin e imazhit të shfletuesit, kjo do të thotë se konfigurimi dhe përfundimi i modelit mund të largohen nga tema përgjegjëse për butonat, mesazhet e progresit, futjen e furçave dhe përditësimet e ekranit.

Rezultati nuk është “përpunim i sfondit falas”. E njëjta pajisje ende kryen llogaritjen dhe përdor kujtesën. Përfitimi arkitektonik është ndarja: një operacion i rëndë i modelit ka më pak gjasa të bllokojë çdo përgjigje të ndërfaqes ndërsa funksionon.

Fillimi kryesor ka një punë të ndërfaqes së përdoruesit

Një faqe shfletuesi zakonisht ekzekuton JavaScript në një thread kryesore. Kjo fije gjithashtu koordinon paraqitjen, pikturën dhe hyrjen. Nëse një llogaritje e gjatë e zë atë, klikimet mund të vonohen, animacioni mund të ndalojë dhe shfletuesi mund të paralajmërojë se faqja nuk përgjigjet.

Një redaktues imazhi ka shumë përgjegjësi në temën kryesore përpara se të fillojë përfundimi:

Vendosja e punës numerike të një modeli segmentimi në të njëjtën fillesë do t’i bënte ato detyra të konkurrojnë drejtpërdrejt. Një punëtor krijon një kufi më të qartë.

Kufiri i bazuar në mesazhe

Redaktori dhe punonjësi nuk ndajnë variabla të zakonshëm. Ata komunikojnë duke dërguar mesazhe. Një rrjedhë e thjeshtuar duket si kjo:

  1. Redaktori krijon ose ripërdor një punëtor.
  2. Kërkon nga punëtori të inicializojë kohën dhe modelin e përfundimit.
  3. Përgatit të dhënat e imazhit dhe dërgon një kërkesë për konkluzione.
  4. Punëtori i konverton të dhënat në hyrjen e pritur të modelit.
  5. Punëtori drejton modelin dhe prodhon vlera maskash.
  6. Dërgon maskën ose të dhënat e rezultatit.
  7. Redaktori kompozon pamjen paraprake dhe mundëson përsosjen ose eksportimin.

Mesazhet duhet të përfshijnë kontekst të mjaftueshëm për të përputhur një përgjigje ndaj kërkesës së saktë. Kjo ka rëndësi nëse një përdorues zgjedh një imazh tjetër përpara se të përfundojë puna e mëparshme. Ndërfaqja duhet të shmangë shfaqjen e një rezultati të vjetër mbi një burim të ri.

Kopjimi dhe transferimi i të dhënave të imazhit

Dërgimi i një mesazhi të vogël me tekst është i lirë. Dërgimi i miliona vlerave piksel mund të jetë i shtrenjtë nëse shfletuesi duhet të kopjojë të gjithë bufferin. API-të e uebit mund të transferojnë pronësinë e disa buferave binare. Një buffer i transferuar bëhet i disponueshëm për marrësin pa mbajtur një dublikatë të përdorshme në anën e dërguesit.

Ky optimizim vjen me një kufizim dizajni: pas transferimit, dërguesi nuk mund të vazhdojë të përdorë të njëjtin buffer sikur të kishte ende të dhënat. Një redaktues mund të mbajë një paraqitje të veçantë të ekranit, të krijojë një tampon konkluzionesh të dedikuar ose të rindërtojë atë që i nevojitet më vonë.

Jo çdo zbatim përdor transferimin në të njëjtat vende. Mësimi i përgjithshëm është se ndarja e fijeve nuk e bën lëvizjen e të dhënave të zhduket. Dimensionet e imazhit, madhësia e buferit dhe numri i konvertimeve ende ndikojnë në vonesën dhe kujtesën.

Çfarë Easy Background Remover vendos në punëtor

Easy Background Remover përdor një Web Worker me një kohë ekzekutimi të konkluzioneve të shfletuesit për segmentimin në pajisje. Hapi i rëndë i prerjes automatike prodhon një maskë. Redaktori më pas shfaq rezultatin e përbërë dhe mbështet përsosjen e furçës së kanavacës së CPU-së.

Kjo ndarje u jep dështimeve një kufi më të dobishëm. Nëse punonjësi nuk mund të inicializojë ose rrëzohet gjatë përfundimit, ndërfaqja mund të raportojë një gabim të lidhur me punonjësin në vend që të mbështetet në një skedë të ngrirë përgjithmonë si sinjalin e vetëm.

Ai gjithashtu e mban të kuptueshëm pretendimin e përpunimit lokal. Dërgimi i pikselëve nga një faqe shtesë te punonjësi i vet është komunikim brenda mjedisit të shfletuesit, jo një ngarkim në një API të shkëputjes në distancë. Sesioni i parë mund të shkarkojë veçmas aktivin e modelit të ripërdorshëm; shih Pse ekzekutoni së pari shkarkimet e një modeli.

Një punëtor nuk e bën llogaritjen e menjëhershme

Punëtorët përmirësojnë reagimin, jo aftësinë e papërpunuar të pajisjes. Modeli ende konsumon CPU, GPU ose burime të tjera të kohës së funksionimit sipas asaj që mund të ofrojë shfletuesi. Një hyrje e madhe mund të zgjasë akoma më shumë dhe të kërkojë më shumë memorie sesa një e vogël.

Kanë mbetur disa kufizime:

Fillimi i pesë punonjësve të përfundimit për pesë imazhe nuk është automatikisht pesë herë më i shpejtë. Punëtorët ndajnë të njëjtën makinë. Punët paralele mund të konkurrojnë për gjerësinë e brezit të memories dhe burimet e ekzekutimit, ndërsa çdo shembull i modelit mund të mbajë koston e tij të memories.

Raportimi i progresit është bashkëpunues

Një punonjës mund të dërgojë mesazhe statusi, por nuk e di automatikisht se çfarë përqindje progresi do të ndihet e saktë. Shkarkimi i modelit, inicializimi i kohës së ekzekutimit, përgatitja e hyrjes, konkluzioni, konvertimi i maskës dhe paraqitja e pamjes paraprake janë faza të veçanta me kohë të ndryshme.

Disa faza kanë numërim të matshëm të bajteve. Një ekzekutim i vetëm model mund të ekspozojë vetëm “filluar” dhe “mbaruar”. Prandaj, një përqindje e qetë që përparon në mënyrë të njëtrajtshme mund të jetë më tepër kozmetike sesa një matje e saktë.

UI e përparimit të dobishëm emërton fazën kur është e mundur: përgatitja e modelit, përpunimi i imazhit ose rezultati i ndërtimit. Ai gjithashtu trajton dështimin dhe anulimin në vend që të lërë një rrotullues pa shpjegim.

Anulimi është më shumë sesa fshehja e një rrotullues

Nëse përdoruesi mbyll një imazh ose fillon nga e para, ndërfaqja mund të injorojë përgjigjen eventuale nga kërkesa e vjetëruar. Ndalimi i menjëhershëm i llogaritjes themelore mund të kërkojë mbështetje shtesë nga koha e ekzekutimit ose përfundimi dhe rikrijimi i punonjësit.

Ndërprerja e një punëtori është vendimtare, por ai e hedh poshtë gjendjen e tij të inicializuar. Puna tjetër mund të ketë nevojë të ngarkojë dhe inicializojë përsëri modelin. Për një operacion të shkurtër, shënimi i rezultatit të ndenjur mund të jetë më i lirë se sa të prishni gjithçka.

Zgjedhja e saktë varet nga presioni i kujtesës, kohëzgjatja e funksionimit dhe aftësitë e kohës së funksionimit. Nga këndvështrimi i përdoruesit, rregulli i rëndësishëm është që puna e ndenjur nuk duhet të mbishkruajë modifikimin aktual.

Gabimet duhet të kalojnë gjithashtu kufirin

Një përjashtim brenda një punonjësi nuk bëhet një përjashtim normal i fillit kryesor. Punonjësi duhet të raportojë gabime të përdorshme dhe redaktori duhet të dëgjojë për dështimet e nivelit të punonjësve.

Trajtimi i mirë i gabimeve dallon të paktën:

Kjo është më e zbatueshme sesa një “diçka shkoi keq” e përgjithshme, veçanërisht kur konfigurimi i ekzekutimit të parë dhe përpunimi normal i imazhit kanë zgjidhje të ndryshme.

Prodhimi i punëtorëve është ende vetëm një maskë e parë

Arkitektura e fijeve nuk përmirëson vetvetiu një skaj të paqartë. Punëtori mund të kthejë një maskë teknikisht të vlefshme që ende i mungon gëzofi, materiali transparent, rripat e ngushtë ose një hije e dëshiruar. Këto janë pyetje të segmentimit dhe qëllimit.

Puna e redaktorit rifillon pas përfundimit: shkallëzoni maskën në sistemin e koordinatave të punës, bëni një pamje paraprake, lëreni përdoruesin ta përpunojë atë dhe eksportoni gjendjen aktuale. Rezolucioni i maskës kundrejt madhësisë së pamjes paraprake shpjegon pse ato sisteme koordinative nuk duhet të ngatërrohen.

Një model konciz mendor

Mendoni për punëtorin si një specialist lokal pas një dritareje mesazhesh:

Për pamjen e vetë pikselëve të modelit, vazhdoni me Çfarë shikon një model i prerë në pajisje. Për një përmbledhje praktike nga fundi në fund, shihni Si funksionon heqja e sfondit lokal.

Vazhdoni të eksploroni

Interesante