Kev xam phaj zoo nrog Cliff Click, leej txiv ntawm JIT muab tso ua ke hauv Java

Kev xam phaj zoo nrog Cliff Click, leej txiv ntawm JIT muab tso ua ke hauv JavaCliff Nyem - CTO ntawm Cratus (IoT sensors rau kev txhim kho cov txheej txheem), tus tsim thiab co-founder ntawm ob peb startups (xws li Rocket Realtime School, Neurensic thiab H2O.ai) nrog ob peb txoj kev vam meej. Cliff sau nws thawj tus sau thaum muaj hnub nyoog 15 (Pascal rau TRS Z-80)! Nws paub zoo tshaj plaws rau nws txoj haujlwm ntawm C2 hauv Java (Hiav Txwv Nodes IR). Lub compiler no tau qhia rau ntiaj teb tias JIT tuaj yeem tsim cov lej zoo, uas yog ib qho ntawm cov xwm txheej hauv Java uas yog ib qho ntawm cov software niaj hnub tseem ceeb. Tom qab ntawd Cliff tau pab Azul Systems tsim lub 864-core mainframe nrog cov ntshiab Java software uas txhawb GC pauses ntawm 500-gigabyte heap hauv 10 milliseconds. Feem ntau, Cliff tau tswj xyuas txhua yam ntawm JVM.

 
Qhov no habrapost yog kev sib tham zoo nrog Cliff. Peb yuav tham txog cov ncauj lus hauv qab no:

  • Hloov mus rau qib qis optimizations
  • Yuav ua li cas kom loj refactoring
  • Tus qauv nqi
  • Tsawg-qib optimization kev cob qhia
  • Cov piv txwv ntawm kev txhim kho kev ua haujlwm
  • Vim li cas thiaj tsim koj tus kheej cov lus programming
  • Kev Ua Haujlwm Engineer Career
  • Kev Sib Tw
  • Ib me ntsis txog kev sau npe faib thiab multi-cores
  • Qhov kev sib tw loj tshaj plaws hauv lub neej

Kev xam phaj yog ua los ntawm:

  • Andrey Satarin los ntawm Amazon Web Services. Hauv nws txoj haujlwm, nws tau tswj hwm los ua haujlwm hauv cov haujlwm sib txawv kiag li: nws tau sim NewSQL faib database hauv Yandex, huab tshawb pom hauv Kaspersky Lab, ntau tus neeg ua si hauv Mail.ru thiab kev pabcuam rau suav cov nqi pauv txawv teb chaws hauv Deutsche Bank. Txaus siab rau kev sim loj-loj backend thiab faib tshuab.
  • Vladimir Sitnikov los ntawm Netcracker. Kaum xyoo ntawm kev ua haujlwm ntawm kev ua tau zoo thiab kev ua kom muaj peev xwm ntawm NetCracker OS, software siv los ntawm cov neeg siv xov tooj los ua kom lub network thiab cov txheej txheem tswj cov khoom siv network. Txaus siab rau Java thiab Oracle Database teeb meem kev ua haujlwm. Tus sau ntau tshaj li kaum ob qhov kev txhim kho kev ua tau zoo hauv tus neeg tsav tsheb PostgreSQL JDBC.

Hloov mus rau qib qis optimizations

Andrei: Koj yog lub npe loj hauv ntiaj teb ntawm JIT muab tso ua ke, Java, thiab kev ua haujlwm ua haujlwm feem ntau, txoj cai? 

Cliff: Nws zoo li ntawd!

Andrei: Cia peb pib nrog qee cov lus nug txog kev ua haujlwm. Koj xav li cas txog kev xaiv ntawm qib siab thiab qib qis zoo li ua haujlwm ntawm CPU qib?

Cliff: Yog, txhua yam yooj yim ntawm no. Tus lej ceev tshaj plaws yog qhov uas tsis tau khiav. Yog li ntawd, koj ib txwm yuav tsum pib los ntawm qib siab, ua haujlwm ntawm algorithms. Ib qho kev sau ntawv O zoo dua yuav tuav qhov O cim tsis zoo, tshwj tsis yog qee qhov loj txaus cuam tshuam. Yam tsawg kawg mus kawg. Feem ntau, yog tias koj tau kho qhov seem ntawm koj pawg zoo txaus thiab tseem muaj qee qhov nthuav tawm sab laug, qhov ntawd yog theem qis. Tab sis yuav ua li cas pib los ntawm qib siab? Ua li cas koj thiaj paub tias ua haujlwm siab txaus lawm? Zoo... tsis muaj txoj kev. Tsis muaj cov zaub mov npaj txhij. Koj yuav tsum nkag siab qhov teeb meem, txiav txim siab seb koj yuav ua dab tsi (kom tsis txhob ua cov kauj ruam tsis tsim nyog yav tom ntej) thiab tom qab ntawd koj tuaj yeem nthuav tawm cov profiler, uas tuaj yeem hais qee yam tseem ceeb. Qee lub sij hawm, koj tus kheej paub tias koj tau tshem ntawm qhov tsis tsim nyog thiab nws yog lub sijhawm los ua qee qhov kev ntsuas qis qis. Qhov no yeej yog ib hom kev kos duab tshwj xeeb. Muaj ntau tus neeg ua yam tsis tsim nyog, tab sis txav nrawm heev uas lawv tsis muaj sijhawm los txhawj txog kev tsim khoom. Tab sis qhov no yog mus txog thaum cov lus nug tshwm sim bluntly. Feem ntau 99% ntawm lub sijhawm tsis muaj leej twg mob siab rau qhov kuv ua, txog thaum lub sijhawm tseem ceeb los ntawm txoj kev tseem ceeb uas tsis muaj leej twg saib xyuas. Thiab ntawm no txhua tus pib nagging koj txog "vim li cas nws tsis ua hauj lwm zoo txij thaum pib." Feem ntau, yeej ib txwm muaj ib yam dab tsi los txhim kho kev ua tau zoo. Tab sis 99% ntawm lub sijhawm koj tsis muaj tus thawj coj! Koj tsuas yog sim ua ib yam dab tsi ua haujlwm thiab hauv cov txheej txheem koj pom tias qhov tseem ceeb. Koj tsis tuaj yeem paub ua ntej tias daim ntawv no yuav tsum ua kom zoo tag nrho, yog li, qhov tseeb, koj yuav tsum ua kom zoo tag nrho. Tab sis qhov no tsis yooj yim sua thiab koj tsis ua nws. Muaj ib txwm muaj ntau yam los kho - thiab qhov ntawd yog qhov qub.

Yuav ua li cas kom loj refactoring

Andrei: Koj ua haujlwm li cas ntawm kev ua haujlwm? Qhov no yog qhov teeb meem hla kev txiav. Piv txwv li, koj puas tau ua haujlwm ntawm cov teeb meem uas tshwm sim los ntawm kev sib tshuam ntawm ntau qhov kev ua haujlwm uas twb muaj lawm?

Cliff: Kuv sim zam nws. Yog tias kuv paub tias kev ua tau zoo yuav yog qhov teeb meem, kuv xav txog nws ua ntej kuv pib coding, tshwj xeeb tshaj yog nrog cov ntaub ntawv qauv. Tab sis feem ntau koj pom tag nrho cov no tom qab. Thiab tom qab ntawd koj yuav tsum mus rau qhov ntsuas huab cua thiab ua qhov kuv hu ua "rewrite and conquer": koj yuav tsum lob ib daim loj txaus. Qee qhov chaws tseem yuav tau rov sau dua vim muaj teeb meem kev ua haujlwm lossis lwm yam. Txawm yog vim li cas rau rewriting code, nws yuav luag ib txwm zoo dua los sau ib daim loj dua ib daim me. Lub sijhawm no, txhua tus pib tshee nrog kev ntshai: "Au kuv tus Vajtswv, koj tsis tuaj yeem kov ntau tus lej!" Tab sis qhov tseeb, txoj hauv kev no yuav luag ib txwm ua haujlwm zoo dua. Koj yuav tsum tau ua tam sim ntawd rau qhov teeb meem loj, kos lub voj voog loj nyob ib puag ncig nws thiab hais tias: Kuv yuav rov sau txhua yam hauv lub voj voog. Cov ciam teb yog me dua li cov ntsiab lus hauv nws uas yuav tsum tau hloov. Thiab yog hais tias xws li delineation ntawm ciam teb tso cai rau koj mus ua hauj lwm nyob rau hauv zoo kawg nkaus, koj txhais tes yog dawb, ua raws li koj xav tau. Thaum koj nkag siab qhov teeb meem, cov txheej txheem rov sau dua yog qhov yooj yim dua, yog li noj loj tom!
Nyob rau tib lub sijhawm, thaum koj sau ntawv loj thiab paub tias qhov kev ua tau zoo yuav yog qhov teeb meem, koj tuaj yeem pib txhawj txog nws tam sim ntawd. Qhov no feem ntau hloov mus ua tej yam yooj yim xws li "tsis txhob luam cov ntaub ntawv, tswj cov ntaub ntawv yooj yim li sai tau, ua kom me me." Hauv kev sau ntawv loj, muaj cov txheej txheem los txhim kho qhov ua tau zoo. Thiab lawv yuav luag ib txwm tig los ntawm cov ntaub ntawv.

Tus qauv nqi

Andrei: Hauv ib qho ntawm cov podcasts koj tau tham txog cov qauv nqi hauv cov ntsiab lus ntawm kev tsim khoom. Koj tuaj yeem piav qhia qhov koj txhais li cas ntawm qhov no?

Cliff: Yeej. Kuv tau yug los nyob rau hauv ib lub sijhawm thaum processor kev ua tau zoo yog qhov tseem ceeb heev. Thiab lub sijhawm no rov qab los dua - txoj hmoo tsis yog yam tsis muaj irony. Kuv pib nyob hauv lub hnub ntawm yim-ntsis tshuab; kuv thawj lub computer ua haujlwm nrog 256 bytes. Raws nraim bytes. Txhua yam me me heev. Cov lus qhia yuav tsum tau suav, thiab thaum peb pib txav mus rau pawg lus programming, cov lus tau coj mus rau ntau thiab ntau dua. Muaj Assembler, ces Basic, ces C, thiab C tau saib xyuas ntau cov ntsiab lus, xws li sau npe faib thiab xaiv kev qhia. Tab sis txhua yam yog qhov tseeb heev, thiab yog tias kuv ua tus taw tes rau qhov piv txwv ntawm qhov sib txawv, ces kuv yuav tau txais kev thauj khoom, thiab tus nqi ntawm cov lus qhia no paub. Cov khoom siv kho vajtse tsim muaj qee lub voj voog ntawm lub tshuab, yog li kev ua tiav ceev ntawm cov khoom sib txawv tuaj yeem suav tau yooj yim los ntawm kev ntxiv tag nrho cov lus qhia uas koj yuav khiav. Txhua qhov sib piv / xeem / ceg / hu / thauj khoom / khw tuaj yeem ntxiv thiab hais tias: yog lub sijhawm ua tiav rau koj. Thaum ua haujlwm ntawm kev txhim kho kev ua tau zoo, koj yuav tsum tau them sai sai rau cov lej dab tsi sib haum rau cov voj voog me me. 
Tab sis sai li sai tau thaum koj hloov mus rau Java, Python thiab cov khoom zoo sib xws, koj sai sai txav deb ntawm cov khoom siv qis qis. Tus nqi hu rau getter hauv Java yog dab tsi? Yog tias JIT hauv HotSpot yog lawm hauv kab, nws yuav thauj khoom, tab sis yog tias nws tsis ua qhov no, nws yuav yog lub luag haujlwm hu. Txij li thaum hu yog nyob rau ntawm lub voj kub, nws yuav override tag nrho lwm yam optimizations nyob rau hauv lub voj. Yog li ntawd, tus nqi tiag tiag yuav ntau dua. Thiab tam sim ntawd koj poob lub peev xwm los saib ib daim ntawm cov cai thiab nkag siab tias peb yuav tsum ua nws raws li lub moos ceev, nco thiab cache siv. Tag nrho cov no yuav nthuav tsuas yog tias koj yeej nkag mus rau hauv qhov kev ua tau zoo.
Tam sim no peb pom peb tus kheej nyob rau hauv qhov xwm txheej uas processor speeds tsis tau nce mus rau kaum xyoo. Cov hnub qub rov qab los! Koj tsis tuaj yeem suav rau qhov kev ua tau zoo ntawm ib leeg xov. Tab sis yog tias koj dheev nkag mus rau hauv kev sib piv, nws nyuaj heev, txhua tus saib koj zoo li James Bond. Tenfold accelerations ntawm no feem ntau tshwm sim nyob rau hauv qhov chaw uas ib tug neeg tau messed ib yam dab tsi. Concurrency yuav tsum tau ua haujlwm ntau. Yuav kom tau txais qhov XNUMXx nrawm, koj yuav tsum nkag siab tus qauv nqi. Dab tsi thiab nws raug nqi npaum li cas? Thiab ua li no, koj yuav tsum nkag siab tias tus nplaig haum li cas ntawm cov khoom siv hauv qab.
Martin Thompson xaiv lo lus zoo rau nws qhov blog Mechanical Sympathy! Koj yuav tsum nkag siab tias qhov kho vajtse yuav ua li cas, nws yuav ua li cas, thiab vim li cas nws ua qhov nws ua hauv thawj qhov chaw. Siv qhov no, nws yooj yim heev los pib suav cov lus qhia thiab txheeb xyuas qhov twg lub sijhawm ua tiav mus. Yog tias koj tsis muaj kev cob qhia tsim nyog, koj tsuas yog nrhiav ib tus miv dub hauv chav tsaus. Kuv pom cov neeg optimizing kev ua tau zoo txhua lub sijhawm uas tsis paub tias lawv ua dab tsi. Lawv raug kev txom nyem ntau heev thiab tsis muaj kev vam meej ntau. Thiab thaum kuv coj tib daim code, plam hauv ob peb qhov me me hacks thiab tau txais tsib- lossis kaum-fold nrawm, lawv zoo li: zoo, qhov tsis ncaj ncees, peb twb paub tias koj zoo dua. Zoo kawg. Kuv hais li cas... tus qauv nqi yog hais txog hom code uas koj sau thiab nws khiav ceev npaum li cas ntawm qhov nruab nrab hauv daim duab loj.

Andrei: Thiab koj tuaj yeem khaws cov ntim li ntawd hauv koj lub taub hau li cas? Qhov no puas ua tiav nrog kev paub ntau dua, lossis? Qhov kev paub zoo li no tuaj ntawm qhov twg?

Cliff: Zoo, Kuv tsis tau txais kuv qhov kev paub hauv txoj kev yooj yim tshaj plaws. Kuv programmed hauv Assembly rov qab rau hnub uas koj tuaj yeem nkag siab txhua qhov kev qhia. Nws suab ruam, tab sis txij thaum ntawd los Z80 cov lus qhia tau ib txwm nyob hauv kuv lub taub hau, hauv kuv lub cim xeeb. Kuv tsis nco qab tib neeg lub npe li ntawm ib feeb ntawm kev hais lus, tab sis kuv nco qab code sau 40 xyoo dhau los. Nws yog funny, nws zoo li ib tug syndrome "idiot tus kws tshawb fawb".

Tsawg-qib optimization kev cob qhia

Andrei: Puas muaj txoj hauv kev yooj yim nkag mus?

Cliff: Yog thiab tsis yog. Cov khoom siv uas peb txhua tus siv tsis tau hloov pauv txhua lub sijhawm. Txhua tus siv x86, tshwj tsis yog Arm smartphones. Yog tias koj tsis ua qee yam hardcore embedding, koj ua tib yam. Okay, tom ntej no. Cov lus qhia kuj tsis tau hloov mus rau ntau pua xyoo. Koj yuav tsum mus thiab sau ib yam dab tsi hauv Assembly. Tsis ntau, tab sis txaus los pib nkag siab. Koj luag ntxhi, tab sis kuv hais lus tiag tiag. Koj yuav tsum nkag siab txog kev sib txuas lus ntawm cov lus thiab kho vajtse. Tom qab ntawd koj yuav tsum mus sau me ntsis thiab ua ib qho khoom ua si me me compiler rau cov lus me me. Cov khoom ua si zoo li txhais tau tias nws yuav tsum tau ua rau lub sijhawm tsim nyog. Nws tuaj yeem yooj yim super, tab sis nws yuav tsum tsim cov lus qhia. Txoj cai ntawm kev tsim cov lus qhia yuav pab koj nkag siab txog tus qauv nqi rau tus choj ntawm qib siab uas txhua tus neeg sau thiab lub tshuab code uas khiav ntawm cov khoom siv. Tsab ntawv xov xwm no yuav raug hlawv rau hauv lub hlwb thaum lub sij hawm sau compiler. Txawm tias yooj yim compiler. Tom qab ntawd, koj tuaj yeem pib saib Java thiab qhov tseeb tias nws cov chasm semantic yog qhov tob dua, thiab nws nyuaj dua los tsim cov choj hla nws. Nyob rau hauv Java, nws yog qhov nyuaj dua kom nkag siab tias peb tus choj muab qhov zoo lossis qhov phem, dab tsi yuav ua rau nws poob thiab qhov yuav tsis zoo. Tab sis koj xav tau qee qhov chaw pib qhov twg koj saib cov cai thiab nkag siab: "yog, tus getter no yuav tsum tau sau txhua lub sijhawm." Thiab tom qab ntawd nws hloov tawm tias qee zaum qhov no tshwm sim, tshwj tsis yog qhov xwm txheej thaum txoj kev loj dhau, thiab JIT pib inlining txhua yam. Kev ua tau zoo ntawm cov chaw zoo li no tuaj yeem kwv yees tam sim ntawd. Feem ntau getters ua haujlwm zoo, tab sis tom qab ntawd koj saib cov voj voog kub loj thiab paub tias muaj qee qhov haujlwm hu ua ntab nyob ib puag ncig uas tsis paub tias lawv ua dab tsi. Qhov no yog qhov teeb meem nrog kev siv dav dav ntawm getters, yog vim li cas vim li cas lawv tsis inlined yog tias nws tsis paub meej tias lawv yog tus getter. Yog tias koj muaj lub hauv paus me me, koj tuaj yeem nco ntsoov nws thiab hais tias: qhov no yog tus getter, thiab qhov no yog tus tsim. Nyob rau hauv lub hauv paus loj code, txhua txoj haujlwm nyob ntawm nws tus kheej keeb kwm, uas, feem ntau, tsis paub rau leej twg. Tus profiler hais tias peb poob 24% ntawm lub sijhawm ntawm qee lub voj thiab kom nkag siab tias lub voj no ua dab tsi, peb yuav tsum saib txhua qhov haujlwm sab hauv. Nws yog tsis yooj yim sua kom nkag siab qhov no yam tsis tau kawm txog qhov ua haujlwm, thiab qhov no ua rau cov txheej txheem kev nkag siab sai sai. Tias yog vim li cas kuv tsis siv getters thiab setters, Kuv tau mus txog qib tshiab!
Qhov twg kom tau txais tus qauv nqi? Zoo, koj tuaj yeem nyeem qee yam, tau kawg ... Tab sis kuv xav tias txoj hauv kev zoo tshaj yog ua. Ua ib lub compiler me me yuav yog txoj hauv kev zoo tshaj plaws kom nkag siab txog tus qauv nqi thiab haum rau hauv koj lub taub hau. Ib tug me me compiler uas yuav haum rau programming lub microwave yog ib txoj hauj lwm rau ib tug pib. Zoo, kuv txhais tau tias, yog tias koj twb muaj kev txawj programming, ces qhov ntawd yuav tsum txaus. Tag nrho cov no zoo li parsing ib txoj hlua uas koj muaj raws li qee yam kev qhia txog algebraic, rho tawm cov lus qhia rau kev ua lej los ntawm qhov kev txiav txim kom raug, noj qhov tseeb ntawm cov ntawv sau npe - tag nrho cov no ua tiav ib zaug. Thiab thaum koj ua nws, nws yuav imprinted nyob rau hauv koj lub hlwb. Kuv xav tias txhua leej txhua tus paub dab tsi ib tug compiler ua. Thiab qhov no yuav muab kev nkag siab ntawm tus qauv nqi.

Cov piv txwv ntawm kev txhim kho kev ua haujlwm

Andrei: Dab tsi ntxiv koj yuav tsum xyuam xim rau thaum ua haujlwm ntawm kev tsim khoom?

Cliff: Cov ntaub ntawv qauv. Los ntawm txoj kev, yog, kuv tsis tau qhia cov chav kawm ntev ... Rocket School. Nws yog kev lom zem, tab sis nws yuav tsum tau siv zog ntau, thiab kuv kuj muaj lub neej! OK. Yog li, nyob rau hauv ib qho ntawm cov chav kawm loj thiab nthuav, "Koj qhov kev ua tau zoo mus qhov twg," Kuv muab cov tub ntxhais kawm ua piv txwv: ob thiab ib nrab gigabytes ntawm fintech cov ntaub ntawv tau nyeem los ntawm CSV cov ntaub ntawv thiab tom qab ntawd lawv yuav tsum suav cov khoom muag. . Tsis tu ncua zuam ua lag luam cov ntaub ntawv. UDP pob ntawv hloov mus rau cov ntawv nyeem txij li xyoo 70s. Chicago Mercantile Exchange - txhua yam khoom xws li butter, pob kws, taum pauv, yam zoo li ntawd. Nws yog ib qho tsim nyog yuav tsum suav cov khoom lag luam, tus lej ntawm kev lag luam, qhov nruab nrab ntawm kev txav ntawm cov nyiaj thiab cov khoom, thiab lwm yam. Nws yog qhov yooj yim zoo nkauj lag luam lej: nrhiav cov khoom lag luam (uas yog 1-2 cim hauv lub rooj hash), tau txais tus nqi, ntxiv rau ib qho ntawm cov khoom lag luam, ntxiv ntim, ntxiv tus nqi, thiab ob peb lwm yam. lej yooj yim heev. Kev siv cov khoom ua si yog qhov yooj yim heev: txhua yam yog nyob rau hauv cov ntaub ntawv, kuv nyeem cov ntaub ntawv thiab txav mus los ntawm nws, faib cov ntaub ntawv ib leeg rau hauv Java cov hlua, nrhiav cov khoom tsim nyog hauv lawv thiab ntxiv rau lawv raws li cov lej tau piav qhia saum toj no. Thiab nws ua haujlwm ntawm qee qhov ceev.

Nrog rau txoj hauv kev no, nws pom tseeb tias muaj dab tsi tshwm sim, thiab kev suav sib txuas yuav tsis pab, txoj cai? Nws hloov tawm tias kev nce qib tsib zaug tuaj yeem ua tiav los ntawm kev xaiv cov ntaub ntawv tsim nyog. Thiab qhov no surprises txawm txog tej programmers! Hauv kuv qhov xwm txheej tshwj xeeb, qhov ua kom yuam kev yog tias koj yuav tsum tsis txhob ua cov cim xeeb faib rau hauv lub voj voog kub. Zoo, qhov no tsis yog qhov tseeb tag nrho, tab sis feem ntau - koj yuav tsum tsis txhob hais txog "ib zaug hauv X" thaum X loj txaus. Thaum X yog ob thiab ib nrab gigabytes, koj yuav tsum tsis txhob faib dab tsi "ib zaug hauv ib tsab ntawv", lossis "ib zaug ib kab", lossis "ib zaug rau ib qho", txhua yam zoo li ntawd. Qhov no yog lub sijhawm siv. Qhov no txawm ua haujlwm li cas? Xav tias kuv hu xov tooj String.split() los yog BufferedReader.readLine(). Readline ua ib txoj hlua los ntawm ib txheej ntawm bytes uas tuaj dhau lub network, ib zaug rau txhua kab, rau txhua qhov ntau pua lab kab. Kuv muab cov kab no, cais nws thiab muab pov tseg. Vim li cas kuv muab pov tseg - zoo, Kuv twb tau ua tiav nws, yog tag nrho. Yog li, rau txhua tus byte nyeem los ntawm cov 2.7G, ob lub cim yuav raug sau rau hauv kab, uas yog, twb 5.4G, thiab kuv tsis xav tau lawv rau dab tsi ntxiv, yog li lawv raug pov tseg. Yog tias koj saib ntawm lub cim xeeb bandwidth, peb thauj 2.7G uas dhau los ntawm lub cim xeeb thiab lub cim xeeb tsheb npav hauv lub processor, thiab tom qab ntawd ob zaug ntau npaum li xa mus rau cov kab uas nyob hauv nco, thiab tag nrho cov no yog frayed thaum txhua kab tshiab tsim. Tab sis kuv yuav tsum tau nyeem nws, kho vajtse nyeem nws, txawm tias txhua yam yog frayed tom qab. Thiab kuv yuav tsum tau sau nws vim kuv tau tsim ib kab thiab cov caches puv - lub cache tsis tuaj yeem haum 2.7G. Yog li, rau txhua byte kuv nyeem, kuv nyeem ob bytes ntxiv thiab sau ob bytes ntxiv, thiab thaum kawg lawv muaj qhov sib piv 4: 1 - hauv qhov piv txwv no peb tau nkim lub cim xeeb bandwidth. Thiab ces nws hloov tawm tias yog kuv ua String.split() - qhov no tsis yog zaum kawg kuv ua qhov no, tej zaum yuav muaj lwm 6-7 teb sab hauv. Yog li cov cai classic ntawm kev nyeem CSV thiab tom qab ntawd txheeb xyuas cov hlua ua rau lub cim xeeb bandwidth pov tseg ntawm 14: 1 txheeb ze rau qhov koj xav tau tiag tiag. Yog tias koj pov tseg cov kev xaiv no, koj tuaj yeem tau txais kev nrawm dua tsib zaug.

Thiab nws tsis yog qhov nyuaj heev. Yog tias koj saib cov cai los ntawm lub kaum sab xis, txhua yam yuav yooj yim heev thaum koj paub txog qhov teeb meem. Koj yuav tsum tsis txhob tso tseg kev nco tag nrho: qhov teeb meem nkaus xwb yog tias koj faib ib yam dab tsi thiab nws tam sim ntawd tuag, thiab txoj kev nws hlawv ib qho tseem ceeb, uas nyob rau hauv cov ntaub ntawv no yog nco bandwidth. Thiab tag nrho cov no ua rau poob rau hauv productivity. Ntawm x86 koj feem ntau yuav tsum tau ua kom nquag plias cov txheej txheem ua haujlwm, tab sis ntawm no koj tau hlawv tag nrho cov cim xeeb ua ntej. Qhov kev daws teeb meem yog kom txo cov paug tawm. 
Lwm qhov ntawm qhov teeb meem yog tias koj khiav lub profiler thaum lub cim xeeb stripe khiav tawm, txoj cai thaum nws tshwm sim, koj feem ntau tos kom lub cache rov qab los vim nws puv ntawm cov khib nyiab uas koj nyuam qhuav tsim, tag nrho cov kab no. Yog li ntawd, txhua qhov kev thauj khoom lossis lub khw muag khoom ua haujlwm qeeb, vim tias lawv ua rau cache tsis nco - tag nrho cov cache tau qeeb, tos cov khib nyiab tawm. Yog li ntawd, tus profiler yuav cia li qhia sov random suab smeared thoob plaws tag nrho lub voj - yuav tsis muaj cais kub qhia los yog qhov chaw nyob rau hauv cov cai. Tsuas yog suab nrov xwb. Thiab yog tias koj saib ntawm GC cycles, lawv tag nrho Cov Tub Ntxhais Hluas thiab nrawm nrawm - microseconds lossis milliseconds siab tshaj plaws. Tom qab tag nrho, tag nrho cov cim xeeb no tuag tam sim ntawd. Koj faib ntau plhom gigabytes, thiab nws txiav lawv, thiab txiav lawv, thiab txiav lawv dua. Tag nrho cov no tshwm sim sai heev. Nws hloov tawm hais tias muaj pheej yig GC cycles, sov suab nrov nyob rau hauv tag nrho lub voj voog, tab sis peb xav tau 5x speedup. Lub sijhawm no, qee yam yuav tsum kaw hauv koj lub taub hau thiab suab: "Vim li cas qhov no?!" Nco strip overflow tsis tshwm nyob rau hauv classic debugger; koj yuav tsum tau khiav lub hardware kev ua tau zoo counter debugger thiab pom nws tus kheej thiab ncaj qha. Tab sis qhov no tsis tuaj yeem cuam tshuam ncaj qha los ntawm peb cov tsos mob no. Cov tsos mob thib peb yog thaum koj saib qhov koj tseem ceeb, nug tus profiler, thiab nws teb: "Koj tau ua ib txhiab kab, tab sis GC ua haujlwm dawb." Thaum qhov no tshwm sim, koj paub tias koj tau tsim ntau yam khoom thiab hlawv tag nrho txoj kab nco. Muaj ib txoj hauv kev los txheeb xyuas qhov no, tab sis nws tsis pom tseeb. 

Qhov teeb meem yog nyob rau hauv cov ntaub ntawv qauv: tus liab qab qauv hauv qab txhua yam uas tshwm sim, nws yog heev loj, nws yog 2.7G ntawm disk, yog li ua ib daim ntawv luam ntawm no yog heev undesirable - koj xav mus thauj nws los ntawm lub network byte tsis tam sim ntawd. rau hauv cov ntawv sau npe, kom tsis txhob nyeem-sau rau kab rov qab thiab tawm tsib zaug. Hmoov tsis zoo, Java tsis muab koj lub tsev qiv ntawv zoo li ib feem ntawm JDK los ntawm lub neej ntawd. Tab sis qhov no yog qhov tsis tseem ceeb, txoj cai? Qhov tseem ceeb, cov no yog 5-10 kab ntawm cov cai uas yuav siv los siv koj tus kheej buffered hlua loader, uas rov ua tus cwj pwm ntawm cov hlua hauv chav kawm, thaum ua ib qho wrapper nyob ib ncig ntawm lub hauv paus byte tsis. Raws li qhov tshwm sim, nws hloov tawm tias koj ua haujlwm yuav luag zoo li nrog cov hlua, tab sis qhov tseeb taw tes rau qhov tsis yog txav mus rau qhov ntawd, thiab cov bytes nyoos tsis tau theej nyob qhov twg, thiab yog li tib lub buffers tau rov qab siv dua, thiab lub operating system zoo siab los coj koj tus kheej cov khoom uas nws tau tsim rau, zoo li zais ob-buffering ntawm cov byte buffers, thiab koj tsis sib tsoo los ntawm qhov kawg ntawm cov ntaub ntawv tsis tsim nyog. Los ntawm txoj kev, koj puas to taub tias thaum ua haujlwm nrog GC, nws tau lees paub tias txhua qhov kev faib khoom nco yuav tsis pom rau lub processor tom qab lub voj voog GC kawg? Yog li ntawd, tag nrho cov no tsis tuaj yeem nyob hauv lub cache, thiab tom qab ntawd 100% lav tsis tau tshwm sim. Thaum ua haujlwm nrog tus taw tes, ntawm x86, rho tawm ib daim ntawv teev npe los ntawm lub cim xeeb siv sijhawm 1-2 teev, thiab sai li sai tau qhov no tshwm sim, koj them, them, them, vim tias lub cim xeeb tag nrho. NYIAJ caches - thiab qhov no yog tus nqi ntawm kev faib lub cim xeeb. Tus nqi tiag tiag.

Hauv lwm lo lus, cov ntaub ntawv qauv yog qhov nyuaj tshaj plaws los hloov. Thiab thaum koj paub tias koj tau xaiv cov ntaub ntawv tsis raug uas yuav tua cov kev ua tau zoo tom qab, feem ntau muaj ntau txoj haujlwm yuav tsum tau ua, tab sis yog tias koj tsis ua, tej yam yuav tsis zoo. Ua ntej tshaj plaws, koj yuav tsum xav txog cov qauv ntaub ntawv, qhov no yog qhov tseem ceeb. Tus nqi tseem ceeb ntawm no poob rau cov ntaub ntawv rog, uas tau pib siv hauv cov qauv ntawm "Kuv tau theej cov ntaub ntawv qauv X rau hauv cov ntaub ntawv qauv Y vim kuv nyiam cov duab Y zoo dua." Tab sis daim ntawv ua haujlwm (uas zoo li pheej yig) ua tau pov tseg lub cim xeeb bandwidth thiab qhov ntawd yog qhov uas tag nrho lub sijhawm ua tiav raug faus. Yog tias kuv muaj txoj hlua loj ntawm JSON thiab kuv xav tig nws mus rau hauv ib qho qauv DOM tsob ntoo ntawm POJOs lossis ib yam dab tsi, kev ua haujlwm ntawm kev cais cov hlua ntawd thiab tsim lub POJO, thiab tom qab ntawd nkag mus rau POJO dua tom qab, yuav ua rau tsis muaj nqi - nws yog tsis pheej yig. Tsuas yog tias koj khiav ncig POJOs ntau zaus dua li koj khiav ib ncig ntawm txoj hlua. Offhand, koj tuaj yeem sim decrypt txoj hlua thiab rho tawm tsuas yog yam koj xav tau los ntawm qhov ntawd, tsis tas yuav tig mus rau hauv POJO. Yog tias txhua yam no tshwm sim ntawm txoj hauv kev los ntawm qhov kev ua tau zoo tshaj plaws yuav tsum tau ua, tsis muaj POJO rau koj, koj yuav tsum tau khawb rau hauv kab ncaj qha.

Vim li cas thiaj tsim koj tus kheej cov lus programming

Andrei: Koj hais tias kom nkag siab tus qauv nqi, koj yuav tsum sau koj tus kheej cov lus me me ...

Cliff: Tsis yog hom lus, tab sis yog tus sau. Ib hom lus thiab ib qho compiler yog ob yam sib txawv. Qhov sib txawv tseem ceeb tshaj plaws yog nyob hauv koj lub taub hau. 

Andrei: Los ntawm txoj kev, raws li kuv paub, koj tab tom sim tsim koj cov lus. Rau dab tsi?

Cliff: Vim kuv ua tau! Kuv yog ib nrab so haujlwm, yog li qhov no yog kuv txoj haujlwm nyiam. Kuv twb tau ua raws li lwm tus neeg cov lus tag nrho kuv lub neej. Kuv kuj tau ua haujlwm ntau ntawm kuv cov coding style. Thiab kuj vim kuv pom teeb meem ua lwm yam lus. Kuv pom tias muaj txoj hauv kev zoo dua los ua tej yam uas paub. Thiab kuv yuav siv lawv. Kuv tsuas yog nkees ntawm pom teeb meem hauv kuv tus kheej, hauv Java, hauv Python, hauv lwm hom lus. Tam sim no kuv sau hauv React Native, JavaScript thiab Elm raws li kev nyiam ua uas tsis yog hais txog nyiaj laus, tab sis hais txog kev ua haujlwm nquag. Kuv kuj sau hauv Python thiab, feem ntau yuav, yuav ua haujlwm txuas ntxiv ntawm kev kawm tshuab rau Java backends. Muaj ntau hom lus nrov thiab lawv txhua tus muaj cov yam ntxwv nthuav. Txhua tus neeg zoo nyob rau hauv lawv tus kheej txoj kev thiab koj tuaj yeem sim coj tag nrho cov yam ntxwv no ua ke. Yog li, kuv tab tom kawm tej yam uas kuv nyiam, kev coj tus cwj pwm ntawm cov lus, sim ua kom muaj qhov tsim nyog semantics. Thiab tam sim no kuv ua tiav! Tam sim no kuv tab tom tawm tsam nrog kev nco semantics, vim kuv xav kom muaj nws zoo li hauv C thiab Java, thiab tau txais lub cim xeeb muaj zog thiab nco semantics rau kev thauj khoom thiab khw muag khoom. Nyob rau tib lub sijhawm, muaj hom kev xav tsis siv neeg zoo li hauv Haskell. Ntawm no, kuv tab tom sim sib xyaw Haskell-zoo li hom kev xav nrog kev nco ua haujlwm hauv C thiab Java. Qhov no yog qhov kuv tau ua rau 2-3 lub hlis dhau los, piv txwv.

Andrei: Yog tias koj tsim ib hom lus uas siv qhov zoo ntawm lwm yam lus, koj puas xav tias ib tug neeg yuav ua qhov txawv: coj koj lub tswv yim thiab siv lawv?

Cliff: Nov yog yam lus tshiab tshwm sim! Vim li cas Java zoo li C? Vim hais tias C muaj ib tug zoo syntax uas txhua leej txhua tus to taub thiab Java tau tshwm sim los ntawm no syntax, ntxiv hom kev nyab xeeb, array ciam teb checking, GC, thiab lawv kuj txhim kho tej yam los ntawm C. Lawv ntxiv lawv tus kheej. Tab sis lawv tau txais kev tshoov siab ntau heev, puas yog? Txhua leej txhua tus sawv ntawm lub xub pwg nyom ntawm cov neeg loj heev uas tuaj ua ntej koj - yog li kev vam meej.

Andrei: Raws li kuv to taub, koj cov lus yuav muaj kev nco zoo. Koj puas tau xav txog kev siv qee yam xws li qiv nyiaj los ntawm Rust? Koj puas tau saib nws, koj xav li cas txog nws?

Cliff: Zoo, Kuv tau sau C rau hnub nyoog, nrog rau tag nrho cov malloc thiab dawb, thiab manually tswj lub neej. Koj paub, 90-95% ntawm manually tswj lub neej lub sij hawm muaj tib lub qauv. Thiab nws yog heev, mob heev ua nws manually. Kuv xav kom lub compiler tsuas qhia koj txog dab tsi tshwm sim nyob rau ntawd thiab qhov koj ua tiav nrog koj cov yeeb yam. Rau qee yam, qiv tus checker ua qhov no tawm ntawm lub thawv. Thiab nws yuav tsum cia li tso tawm cov ntaub ntawv, nkag siab txhua yam, thiab tsis yog lub nra hnyav rau kuv los nthuav qhia qhov kev nkag siab no. Nws yuav tsum tau ua yam tsawg kawg hauv kev khiav tawm hauv zos, thiab tsuas yog tias nws ua tsis tiav, ces nws yuav tsum tau ntxiv cov lus piav qhia uas yuav piav qhia txog lub neej - thiab cov tswv yim zoo li no yog qhov nyuaj dua li cov qiv nyiaj qiv, lossis qhov tseeb ib qho kev nco qab uas twb muaj lawm. Kev xaiv ntawm "txhua yam zoo" thiab "Kuv tsis nkag siab dab tsi" - tsis yog, yuav tsum muaj qee yam zoo dua. 
Yog li, raws li ib tug neeg uas tau sau ntau tus lej hauv C, kuv xav tias muaj kev txhawb nqa rau kev tswj lub neej tsis siv neeg yog qhov tseem ceeb tshaj plaws. Kuv kuj txaus siab rau ntau npaum li cas Java siv lub cim xeeb thiab qhov tsis txaus siab tseem ceeb yog GC. Thaum koj faib lub cim xeeb hauv Java, koj yuav tsis tau rov qab lub cim xeeb uas nyob hauv zos ntawm lub voj voog GC kawg. Qhov no tsis yog cov lus hauv cov lus nrog kev tswj hwm kev nco ntau dua. Yog tias koj hu rau malloc, koj tam sim tau txais lub cim xeeb uas feem ntau nyuam qhuav siv. Feem ntau koj ua qee yam ib ntus nrog kev nco thiab tam sim ntawd rov qab los. Thiab tam sim ntawd nws rov qab mus rau lub pas dej malloc, thiab lub voj voog malloc tom ntej rub nws tawm dua. Yog li ntawd, kev siv lub cim xeeb tiag tiag raug txo qis rau cov khoom siv nyob hauv ib lub sijhawm, ntxiv rau kev xau. Thiab yog tias txhua yam tsis xau hauv txoj kev tsis ncaj ncees, feem ntau ntawm lub cim xeeb xaus rau hauv caches thiab processor, thiab nws ua haujlwm sai. Tab sis yuav tsum tau ntau phau ntawv nco kev tswj nrog malloc thiab hu dawb nyob rau hauv txoj cai kev txiav txim, nyob rau hauv txoj cai qhov chaw. Xeb tuaj yeem ua qhov no kom zoo ntawm nws tus kheej, thiab ntau zaus muab kev ua tau zoo dua, txij li kev siv lub cim xeeb tau nqaim mus rau qhov kev suav tam sim no - tsis yog tos rau lub voj voog GC tom ntej kom tso lub cim xeeb. Yog li ntawd, peb tau txais txoj kev nthuav dav heev los txhim kho kev ua tau zoo. Thiab muaj zog heev - Kuv txhais tau tias, Kuv tau ua tej yam zoo li no thaum ua cov ntaub ntawv rau fintech, thiab qhov no tso cai rau kuv kom tau txais kev nrawm ntawm tsib zaug. Qhov ntawd yog qhov kev txhawb nqa loj heev, tshwj xeeb tshaj yog nyob hauv lub ntiaj teb uas cov txheej txheem tsis tau nrawm dua thiab peb tseem tos kom txhim kho.

Kev Ua Haujlwm Engineer Career

Andrei: Kuv kuj xav nug ib puag ncig txog kev ua haujlwm dav dav. Koj tau nce siab nrog koj txoj haujlwm JIT ntawm HotSpot thiab tom qab ntawd tsiv mus rau Azul, uas tseem yog lub tuam txhab JVM. Tab sis peb twb tau ua haujlwm ntau dua ntawm hardware dua li software. Thiab tom qab ntawd lawv mam li hloov mus rau Cov Ntaub Ntawv Loj thiab Kev Kawm Tshuab, thiab tom qab ntawd mus rau kev dag ntxias. Qhov no tshwm sim li cas? Cov no yog cov chaw sib txawv ntawm kev loj hlob.

Cliff: Kuv tau programming tau ntev heev thiab tau tswj hwm ntau chav sib txawv. Thiab thaum tib neeg hais tias: "Auj, koj yog tus uas tau ua JIT rau Java!", nws ib txwm funny. Tab sis ua ntej ntawd, kuv tau ua haujlwm ntawm lub clone ntawm PostScript - cov lus uas Apple ib zaug siv rau nws lub tshuab luam ntawv laser. Thiab ua ntej ntawd kuv tau ua ib qho kev siv ntawm Lus Forth. Kuv xav tias lub ntsiab lus tseem ceeb rau kuv yog kev txhim kho cov cuab yeej. Tag nrho kuv lub neej kuv tau ua cov cuab yeej uas lwm tus neeg sau lawv cov kev pabcuam txias. Tab sis kuv kuj tau koom nrog hauv kev txhim kho cov kev khiav hauj lwm, cov tsav tsheb, cov ntsiav-theem debuggers, cov lus rau OS txoj kev loj hlob, uas tau pib tawm tsis tseem ceeb, tab sis dhau sij hawm dhau los ua ntau thiab nyuaj. Tab sis lub ntsiab lus tseem ceeb tseem yog kev txhim kho cov cuab yeej. Ib feem loj ntawm kuv lub neej dhau ntawm Azul thiab Sun, thiab nws yog hais txog Java. Tab sis thaum kuv nkag mus rau hauv Cov Ntaub Ntawv Loj thiab Kev Kawm Tshuab, Kuv muab kuv lub kaus mom zoo nkauj rov qab thiab hais tias, "Auj, tam sim no peb muaj qhov teeb meem tsis tseem ceeb, thiab muaj ntau yam nthuav dav thiab cov neeg ua tej yam." Qhov no yog ib txoj hauv kev loj hlob zoo los coj.

Yog lawm, Kuv yeej nyiam kev faib xam. Kuv thawj txoj haujlwm yog ua tub ntxhais kawm hauv C, ntawm qhov project tshaj tawm. Qhov no tau muab faib xam rau ntawm Zilog Z80 chips uas tau sau cov ntaub ntawv rau analog OCR, tsim los ntawm tus kws tshuaj ntsuam xyuas tiag tiag. Nws yog ib lub ntsiab lus txias thiab vwm tag. Tab sis muaj teeb meem, qee qhov tsis tau lees paub kom raug, yog li koj yuav tsum tau muab ib daim duab thiab qhia rau tus neeg uas tuaj yeem nyeem nrog lawv lub qhov muag thiab tshaj tawm qhov nws hais, thiab yog li ntawd muaj cov haujlwm nrog cov ntaub ntawv, thiab cov haujlwm no. muaj lawv cov lus. Muaj ib qho backend uas ua tiav tag nrho cov no - Z80s khiav nyob rau hauv parallel nrog vt100 terminals khiav - ib tug rau ib tug neeg, thiab muaj ib tug parallel programming qauv ntawm lub Z80. Qee qhov kev nco zoo sib koom los ntawm tag nrho Z80s hauv lub hnub qub teeb tsa; Lub backplane kuj tau sib koom, thiab ib nrab ntawm RAM tau sib koom hauv lub network, thiab ib nrab yog ntiag tug lossis mus rau lwm yam. Lub ntsiab lus complex parallel faib system nrog sib koom ... semi-shared nco. Thaum twg yog qhov no ... Kuv tseem nco tsis tau, qhov chaw hauv nruab nrab-80s. Tau ntev lawm. 
Yog lawm, cia peb xav tias 30 xyoo yog lub sijhawm ntev dhau los. Cov teeb meem ntsig txog kev faib xam tau muaj ntev heev; tib neeg tau ua tsov rog ntev nrog Beowulf- pawg. Cov pawg zoo li no zoo li ... Piv txwv li: muaj Ethernet thiab koj x86 ceev tau txuas nrog Ethernet no, thiab tam sim no koj xav kom tau txais cov cim qhia cuav, vim tsis muaj leej twg tuaj yeem faib cov lej coding tom qab ntawd, nws nyuaj dhau thiab yog li ntawd muaj yog fake koom nco nrog kev tiv thaiv lub cim xeeb nplooj ntawv ntawm x86, thiab yog tias koj sau rau nplooj ntawv no, peb tau hais rau lwm tus processors tias yog lawv nkag mus rau tib lub cim xeeb sib koom, nws yuav tsum tau thauj khoom los ntawm koj, thiab yog li qee yam zoo li cov txheej txheem rau kev txhawb nqa. cache coherence tshwm sim thiab software rau qhov no. Nthuav tswv yim. Qhov teeb meem tiag tiag, tau kawg, yog lwm yam. Tag nrho cov no ua haujlwm, tab sis koj tau txais cov teeb meem kev ua tau zoo, vim tias tsis muaj leej twg nkag siab txog cov qauv kev ua tau zoo ntawm qib txaus - cov qauv kev nco tau zoo li cas nyob rau ntawd, yuav ua li cas kom paub tseeb tias cov nodes tsis muaj qhov kawg ping ib leeg, thiab lwm yam.

Qhov kuv tuaj txog hauv H2O yog tias nws yog tus tsim tawm lawv tus kheej uas yog lub luag haujlwm rau kev txiav txim siab qhov sib luag yog zais thiab qhov twg tsis yog. Kuv tuaj nrog tus qauv coding uas ua rau kev sau cov lej ua haujlwm tau yooj yim thiab yooj yim. Tab sis sau qeeb-khiav code yog qhov nyuaj, nws yuav saib tsis zoo. Koj yuav tsum tau sim sim sau cov lej qeeb, koj yuav tau siv cov txheej txheem uas tsis yog qauv. Lub braking code yog pom thaum xub thawj siab ib muag. Raws li qhov tshwm sim, koj feem ntau sau cov lej uas khiav nrawm, tab sis koj yuav tsum paub tias yuav ua li cas rau qhov sib koom nco. Tag nrho cov no yog khi rau loj arrays thiab tus cwj pwm muaj zoo ib yam li non-volatile loj arrays nyob rau hauv parallel Java. Kuv txhais tau tias, xav txog tias ob kab ntawv sau rau ib qho kev sib txuas, ib qho yeej, thiab lwm qhov, raws li, poob, thiab koj tsis paub qhov twg yog qhov twg. Yog tias lawv tsis hloov pauv, ces qhov kev txiav txim tuaj yeem yog qhov koj xav tau - thiab qhov no ua haujlwm zoo heev. Cov tib neeg yeej mob siab txog kev txiav txim ntawm kev ua haujlwm, lawv muab qhov tsis sib haum xeeb rau hauv qhov chaw raug, thiab lawv xav tias muaj teeb meem txog kev nco txog kev ua haujlwm hauv qhov chaw raug. Txwv tsis pub, lawv tsuas yog sau cov lej hauv daim ntawv ntawm cov voj voog ntawm 1 txog N, qhov twg N yog qee qhov trillions, hauv kev cia siab tias txhua qhov teeb meem nyuaj yuav cia li ua tib yam - thiab nws tsis ua haujlwm nyob ntawd. Tab sis hauv H2O qhov no tsis yog Java lossis Scala; koj tuaj yeem xav txog nws "Java rho tawm" yog tias koj xav tau. Qhov no yog ib qho yooj yim programming style thiab zoo ib yam li sau yooj yim C los yog Java code nrog loops thiab arrays. Tab sis tib lub sijhawm, nco tuaj yeem ua tiav hauv terabytes. Kuv tseem siv H2O. Kuv siv nws los ntawm qee lub sijhawm hauv cov haujlwm sib txawv - thiab nws tseem yog qhov nrawm tshaj plaws, ntau lub sijhawm sai dua nws cov neeg sib tw. Yog tias koj tab tom ua Cov Ntaub Ntawv Loj nrog cov ntaub ntawv columnar, nws nyuaj heev los tuav H2O.

Kev Sib Tw

Andrei: Dab tsi yog koj qhov kev sib tw loj tshaj plaws hauv koj txoj haujlwm tag nrho?

Cliff: Puas yog peb tab tom tham txog cov txheej txheem lossis tsis yog txheej txheem ntawm qhov teeb meem? Kuv xav hais tias qhov kev sib tw loj tshaj plaws tsis yog kev siv tshuab. 
Hais txog kev sib tw. Kuv tsuas kov yeej lawv. Kuv tsis paub tias qhov loj tshaj plaws yog dab tsi, tab sis muaj qee qhov zoo nkauj nthuav tawm uas siv sijhawm me ntsis, kev nyuaj siab. Thaum kuv mus rau Sun, kuv paub tseeb tias kuv yuav ua kom nrawm nrawm, thiab ib pawg ntawm cov laus hais tias kuv yuav tsis ua tiav. Tab sis kuv tau ua raws li txoj kev no, tau sau ib daim ntawv sau rau hauv tus neeg faib npe, thiab nws tau nrawm heev. Nws tau nrawm npaum li niaj hnub C1, tab sis tus faib tau qeeb qeeb dua tom qab ntawd, thiab hauv qab nws yog qhov teeb meem loj ntawm cov ntaub ntawv. Kuv xav tau nws los sau ib daim ntawv teev npe graphical faib thiab kuv tsis nkag siab qhov teeb meem ntawm cov lej nthuav tawm thiab nrawm, uas muaj nyob rau lub sijhawm ntawd thiab tseem ceeb heev. Nws tau muab tawm tias cov qauv ntaub ntawv feem ntau tshaj qhov cache loj ntawm x86s ntawm lub sijhawm ntawd, thiab yog li ntawd, yog tias kuv pib xav tias tus neeg faib npe yuav ua haujlwm tawm 5-10 feem pua ​​​​ntawm tag nrho lub sijhawm jitter, tom qab ntawd qhov tseeb nws tau dhau los ua. 50 feem pua.

Raws li lub sij hawm mus, lub compiler tau ua kom huv si thiab ua tau zoo dua, nres tsim cov cai txaus ntshai nyob rau hauv ntau qhov xwm txheej, thiab kev ua haujlwm tau pib zoo li qhov C compiler tsim. Tshwj tsis yog, tau kawg, koj sau qee qhov crap uas txawm C tsis nrawm. . Yog tias koj sau code zoo li C, koj yuav tau txais kev ua haujlwm zoo li C hauv ntau kis. Thiab qhov ntxiv koj mus, ntau zaus koj tau txais code uas asymptotically coincided nrog qib C, tus neeg faib npe pib zoo li ib yam dab tsi ua tiav ... tsis hais seb koj tus lej khiav nrawm lossis qeeb. Kuv txuas ntxiv ua haujlwm ntawm tus neeg faib khoom kom nws xaiv tau zoo dua. Nws ua qeeb qeeb thiab qeeb, tab sis nws tau ua kom zoo dua thiab ua tau zoo dua nyob rau hauv rooj plaub uas tsis muaj leej twg tuaj yeem tiv tau. Kuv tuaj yeem dhia mus rau hauv tus neeg faib npe, faus ib hlis ntawm kev ua haujlwm nyob ntawd, thiab mam li nco dheev tag nrho cov cai yuav pib ua tiav 5% sai dua. Qhov no tshwm sim tom qab lub sijhawm thiab tus neeg sau npe tau los ua ib yam dab tsi ntawm kev kos duab - txhua tus nyiam nws lossis ntxub nws, thiab cov neeg hauv tsev kawm tau nug cov lus nug ntawm lub ncauj lus "vim li cas txhua yam ua li no", vim li cas ho tsis kab scan, thiab qhov txawv li cas. Cov lus teb tseem yog tib yam: tus faib raws li cov duab kos duab ntxiv rau kev ua haujlwm zoo heev nrog cov lej tsis sib xws yog sib npaug rau riam phom ntawm kev yeej, kev sib xyaw zoo tshaj plaws uas tsis muaj leej twg tuaj yeem swb. Thiab qhov no yog qhov tsis paub meej. Tag nrho lwm yam uas tus neeg sau ua tau muaj cov kev kawm zoo, txawm hais tias lawv kuj tau coj mus rau theem ntawm kev kos duab. Kuv ib txwm ua tej yam uas yuav tsum tig lub compiler rau hauv ib qho kev kos duab. Tab sis tsis muaj qhov no yog dab tsi txawv tshaj plaw - tsuas yog rau cov npe faib. Qhov ua kom yuam kev yog yuav tsum ceev faj txiav nyob rau hauv load thiab, yog tias qhov no tshwm sim (Kuv tuaj yeem piav qhia ntau ntxiv yog tias xav tau), qhov no txhais tau hais tias koj tuaj yeem inline ntau dua, tsis muaj kev pheej hmoo ntawm kev poob qis hauv lub sijhawm ua haujlwm. Nyob rau hauv cov hnub ntawd, muaj ib pawg ntawm tag nrho-scale compilers, dai nrog baubles thiab whistles, uas muaj sau npe allocators, tab sis tsis muaj leej twg yuav ua tau.

Qhov teeb meem yog tias koj ntxiv cov txheej txheem uas yuav raug rau inlining, nce thiab nce hauv cheeb tsam inlining, cov txheej txheem siv tam sim no outstrips tus naj npawb ntawm cov npe, thiab koj yuav tsum txiav lawv. Cov theem tseem ceeb feem ntau yog thaum tus neeg faib khoom tso tseg, thiab ib tus neeg sib tw zoo rau kev nchuav yog tsim nyog rau lwm tus, koj yuav muag qee yam khoom qus. Tus nqi ntawm inlining ntawm no yog tias koj poob ib feem ntawm cov nyiaj siv ua haujlwm, nyiaj siv ua haujlwm rau kev hu thiab txuag, koj tuaj yeem pom cov txiaj ntsig sab hauv thiab tuaj yeem txhim kho lawv ntxiv. Tus nqi ntawm inlining yog tias muaj ntau tus nqi nyob yog tsim, thiab yog tias koj cov npe faib nyiaj kub hnyiab ntau tshaj qhov tsim nyog, koj poob tam sim ntawd. Yog li ntawd, feem ntau cov neeg faib khoom muaj teeb meem: thaum inlining hla ib txoj kab, txhua yam hauv ntiaj teb pib raug txiav thiab cov khoom tsim tau tuaj yeem tso rau hauv chav dej. Cov neeg siv cov compiler ntxiv ib co heuristics: piv txwv li, kom tsis txhob inlining, pib nrog ib co loj txaus, vim hais tias kev faib yuav puas txhua yam. Qhov no yog yuav ua li cas ib tug kink nyob rau hauv lub Performance index yog tsim - koj inline, inline, kev ua tau zoo maj mam loj hlob - thiab ces boom! - Nws ntog zoo li lub nrawm nrawm vim tias koj tau kab ntau dhau. Qhov no yog li cas txhua yam ua haujlwm ua ntej qhov tshwm sim ntawm Java. Java xav tau ntau inlining ntau, yog li kuv yuav tsum tau ua kom kuv tus neeg faib khoom hnyav dua kom nws qib tawm ntau dua li kev sib tsoo, thiab yog tias koj inline ntau dhau, nws pib nchuav, tab sis tom qab ntawd lub sijhawm "tsis muaj dej ntxiv" tseem tuaj. Qhov no yog qhov kev soj ntsuam nthuav thiab nws nyuam qhuav tuaj rau kuv tawm ntawm qhov tsis pom, tsis pom tseeb, tab sis nws tau them nyiaj zoo. Kuv tau txais kev txhoj puab heev inlining thiab nws coj kuv mus rau qhov chaw uas Java thiab C kev ua haujlwm ua haujlwm ib sab. Lawv nyob ze tiag tiag - Kuv tuaj yeem sau Java code uas tau nrawm dua li C code thiab tej yam zoo li ntawd, tab sis qhov nruab nrab, hauv daim duab loj ntawm cov khoom, lawv zoo sib xws. Kuv xav tias ib feem ntawm qhov kev tsim txiaj no yog tus sau npe faib, uas tso cai rau kuv mus inline li ruam li qhov ua tau. Kuv tsuas yog inline txhua yam kuv pom. Cov lus nug ntawm no yog seb tus neeg faib khoom puas ua haujlwm zoo, seb qhov tshwm sim yog kev txawj ntse ua haujlwm li cas. Qhov no yog qhov nyuaj heev: kom nkag siab txhua yam no thiab ua kom nws ua haujlwm.

Ib me ntsis txog kev sau npe faib thiab multi-cores

Vladimir: Cov teeb meem zoo li kev tso npe rau kev faib tawm zoo li qee yam uas nyob mus ib txhis, tsis muaj qhov kawg. Kuv xav tias puas tau muaj ib lub tswv yim zoo li kev cog lus thiab ua tsis tiav hauv kev xyaum?

Cliff: Yeej! Sau npe faib yog thaj chaw uas koj sim nrhiav qee qhov heuristics los daws qhov teeb meem NP-ua tiav. Thiab koj yeej tsis tuaj yeem ua tiav qhov kev daws teeb meem zoo tshaj plaws, txoj cai? Qhov no tsuas yog ua tsis tau. Saib, Ua Ntej Lub Sijhawm muab tso ua ke - nws kuj ua haujlwm tsis zoo. Kev sib tham ntawm no yog hais txog qee qhov nruab nrab. Hais txog kev ua tau zoo, yog li koj tuaj yeem mus thiab ntsuas qee yam uas koj xav tias yog kev ua haujlwm zoo - tom qab tag nrho, koj tab tom ua haujlwm los txhim kho nws! Kev faib npe rau npe yog ib lub ntsiab lus hais txog kev ua haujlwm. Thaum koj muaj thawj tus qauv, nws ua haujlwm thiab pleev xim rau qhov xav tau, kev ua haujlwm pib pib. Koj yuav tsum kawm kom ntsuas tau zoo. Vim li cas thiaj tseem ceeb? Yog tias koj muaj cov ntaub ntawv meej, koj tuaj yeem saib ntau qhov chaw thiab pom: yog, nws tau pab ntawm no, tab sis qhov ntawd yog qhov uas txhua yam tawg! Qee cov tswv yim zoo tuaj, koj ntxiv cov tshiab heuristics thiab mam li nco dheev txhua yam pib ua haujlwm zoo me ntsis ntawm qhov nruab nrab. Los nws tsis pib. Kuv muaj ntau qhov xwm txheej uas peb tau tawm tsam rau tsib feem pua ​​​​kev ua tau zoo uas sib txawv ntawm peb txoj kev loj hlob los ntawm tus faib yav dhau los. Thiab txhua zaus nws zoo li qhov no: qhov chaw koj yeej, qhov chaw koj poob. Yog tias koj muaj cov cuab yeej ntsuas kev ua tau zoo, koj tuaj yeem nrhiav cov tswv yim poob thiab nkag siab tias vim li cas lawv ua tsis tiav. Tej zaum nws yuav tsim nyog tawm txhua yam raws li nws yog, lossis tej zaum yuav siv txoj hauv kev loj dua rau kev kho kom zoo, lossis tawm mus thiab kho lwm yam. Nws yog ib pawg ntawm txhua yam! Kuv ua qhov no txias hack, tab sis kuv kuj xav tau qhov no, thiab qhov no, thiab qhov no - thiab lawv tag nrho ua ke muab qee qhov kev txhim kho. Thiab loners tuaj yeem ua tsis tiav. Qhov no yog qhov xwm txheej ntawm kev ua haujlwm ntawm NP-ua tiav cov teeb meem.

Vladimir: Ib tug tau txais kev xav tias tej yam xws li pleev xim rau hauv cov neeg faib khoom yog ib qho teeb meem uas twb tau daws lawm. Zoo, nws tau txiav txim siab rau koj, txiav txim los ntawm qhov koj hais, yog li nws tseem tsim nyog nws ...

Cliff: Nws tsis daws li ntawd. Nws yog koj leej twg yuav tsum tig nws mus rau hauv "kev daws teeb meem". Muaj teeb meem nyuaj thiab lawv yuav tsum tau daws. Thaum qhov no ua tiav, nws yog lub sijhawm ua haujlwm ntawm kev tsim khoom. Koj yuav tsum ua raws li txoj haujlwm no - ua cov qauv ntsuas, sau cov ntsuas ntsuas, piav qhia cov xwm txheej thaum, thaum koj dov rov qab mus rau qhov qub dhau los, koj qhov qub hack pib ua haujlwm dua (lossis rov ua dua, nres). Thiab tsis txhob tso tseg kom txog thaum koj ua tiav ib yam dab tsi. Raws li kuv twb tau hais lawm, yog tias muaj cov tswv yim txias uas tsis ua haujlwm, tab sis hauv kev faib cov npe ntawm cov tswv yim nws yog kwv yees li qhov kawg. Piv txwv li, koj tuaj yeem nyeem cov ntawv tshaj tawm tshawb fawb. Txawm hais tias tam sim no thaj chaw no tau pib txav mus qeeb dua thiab tau pom tseeb dua li ntawm nws cov hluas. Txawm li cas los xij, muaj ntau tus neeg ua haujlwm hauv daim teb no thiab tag nrho lawv cov tswv yim tsim nyog sim, lawv txhua tus tos hauv tis. Thiab koj tsis tuaj yeem qhia lawv zoo npaum li cas tshwj tsis yog koj sim lawv. Lawv koom ua ke zoo npaum li cas nrog txhua yam hauv koj tus neeg faib khoom, vim tias tus neeg faib khoom ua ntau yam, thiab qee cov tswv yim hauv koj tus neeg faib yuav tsis ua haujlwm, tab sis hauv lwm tus faib lawv yuav yooj yim. Txoj hauv kev tseem ceeb los yeej rau tus neeg faib khoom yog rub cov khoom qeeb sab nraud ntawm txoj kev tseem ceeb thiab yuam kom nws sib cais raws cov ciam teb ntawm txoj kev qeeb. Yog li yog tias koj xav khiav GC, taug kev qeeb, deoptimize, pov qhov kev zam, txhua yam khoom ntawd - koj paub tias cov khoom no kuj tsis tshua muaj. Thiab lawv yeej tsis tshua muaj, kuv tau kuaj. Koj ua haujlwm ntxiv thiab nws tshem tawm ntau qhov kev txwv ntawm cov kev qeeb no, tab sis nws tsis muaj teeb meem vim tias lawv qeeb thiab tsis tshua taug kev. Piv txwv li, tus pointer tsis muaj - nws yeej tsis tshwm sim, txoj cai? Koj yuav tsum muaj ntau txoj hauv kev rau ntau yam sib txawv, tab sis lawv yuav tsum tsis txhob cuam tshuam nrog lub ntsiab. 

Vladimir: Koj xav li cas txog multi-cores, thaum muaj ntau txhiab cores ib zaug? Qhov no puas muaj txiaj ntsig?

Cliff: Kev vam meej ntawm GPU qhia tau tias nws muaj txiaj ntsig zoo!

Vladimir: Lawv yog cov tshwj xeeb heev. Yuav ua li cas hais txog lub hom phiaj dav dav processors?

Cliff: Zoo, qhov ntawd yog Azul tus qauv ua lag luam. Cov lus teb rov qab los rau hauv ib lub sijhawm thaum tib neeg nyiam qhov kev ua tau zoo tshaj plaws. Nws yog ib qho nyuaj rau sau parallel code rov qab thaum ntawd. Tus qauv H2O coding yog qhov muaj peev xwm loj, tab sis nws tsis yog hom qauv dav dav. Tej zaum me ntsis ntau dua li thaum siv GPU. Puas yog peb tham txog qhov nyuaj ntawm kev tsim cov khoom zoo li no lossis qhov nyuaj ntawm kev siv nws? Piv txwv li, Azul qhia kuv ib zaj lus qhia nthuav, ib qho uas tsis pom tseeb: me me caches yog qhov qub. 

Qhov kev sib tw loj tshaj plaws hauv lub neej

Vladimir: Yuav ua li cas txog cov kev sib tw uas tsis yog kev siv tshuab?

Cliff: Qhov kev sib tw loj tshaj plaws tsis yog ua... siab zoo thiab zoo rau tib neeg. Thiab yog li ntawd, kuv pheej pom kuv tus kheej hauv cov xwm txheej tsis sib haum xeeb. Cov neeg uas kuv paub tej yam yuav ua tsis ncaj ncees lawm, tab sis tsis paub yuav ua li cas mus rau pem hauv ntej nrog cov teeb meem thiab ua tsis tau lawv. Ntau yam teeb meem mus sij hawm ntev, kav ntev rau ntau xyoo, tau tshwm sim li no. Qhov tseeb tias Java muaj C1 thiab C2 compilers yog qhov tshwm sim ncaj qha ntawm qhov no. Qhov tseeb tias tsis muaj ntau theem muab tso ua ke hauv Java rau kaum xyoo ua ke kuj yog qhov tshwm sim ncaj qha. Nws yog qhov pom tseeb tias peb xav tau qhov system zoo li no, tab sis nws tsis pom tseeb vim li cas nws tsis muaj. Kuv muaj teeb meem nrog ib tug engineer... los yog ib pab engineers. Muaj ib zaug, thaum kuv pib ua hauj lwm ntawm Sun, kuv yog ... Okay, tsis tas li ntawd xwb, feem ntau kuv ib txwm muaj kuv tus kheej xav txog txhua yam. Thiab kuv xav tias nws muaj tseeb tias koj tuaj yeem nqa qhov tseeb ntawm koj li thiab qhia nws lub taub hau. Tshwj xeeb tshaj yog vim kuv yog shockingly txoj cai feem ntau ntawm lub sij hawm. Thiab yog tias koj tsis nyiam txoj hauv kev no ... tshwj xeeb tshaj yog tias koj pom tseeb tsis ncaj ncees lawm thiab ua tsis ncaj ncees ... Feem ntau, ob peb tus neeg tuaj yeem zam qhov kev sib txuas lus no. Txawm hais tias qee tus tuaj yeem, zoo li kuv. Kuv tau tsim kuv lub neej tag nrho ntawm cov ntsiab cai zoo. Yog hais tias koj qhia kuv ib yam dab tsi tsis ncaj ncees lawm, Kuv yuav tam sim ntawd tig ib ncig thiab hais tias: koj hais tsis muaj tseeb. Nyob rau tib lub sij hawm, tau kawg, kuv thov txim thiab tag nrho cov ntawd, kuv yuav nco ntsoov qhov zoo, yog tias muaj, thiab ua lwm yam kom raug. Ntawm qhov tod tes, kuv yog shockingly txoj cai txog ib tug shockingly loj feem pua ​​ntawm tag nrho cov sij hawm. Thiab nws tsis ua haujlwm zoo heev hauv kev sib raug zoo nrog tib neeg. Kuv tsis sim ua kom zoo, tab sis kuv nug cov lus nug tsis tseeb. "Qhov no yuav tsis ua haujlwm, vim ib, ob thiab peb." Thiab lawv zoo li, "Auj!" Muaj lwm yam tshwm sim uas tej zaum zoo dua tsis quav ntsej: piv txwv li, cov uas ua rau kev sib nrauj ntawm kuv tus poj niam thiab kaum xyoo kev nyuaj siab tom qab ntawd.

Kev sib tw yog kev tawm tsam nrog tib neeg, nrog rau lawv txoj kev xav txog yam koj ua tau lossis ua tsis tau, qhov tseem ceeb thiab yam tsis yog. Muaj ntau qhov kev sib tw txog coding style. Kuv tseem sau ntau txoj cai, thiab nyob rau hnub ntawd kuv tseem yuav tsum tau qeeb vim kuv tau ua ntau yam haujlwm sib npaug thiab ua rau lawv tsis zoo, tsis txhob tsom mus rau ib qho. Saib rov qab, kuv tau sau ib nrab tus lej rau Java JIT hais kom ua, C2 hais kom ua. Tus coder ceev tshaj plaws tom ntej sau ib nrab qeeb, ib nrab tom ntej qeeb, thiab nws yog qhov poob qis. Lub xya tus neeg nyob rau hauv kab no yog heev, qeeb heev - uas ib txwm tshwm sim! Kuv kov ntau tus lej. Kuv saib leej twg sau dab tsi, tsis muaj kev zam, kuv ntsia lawv cov cai, tshuaj xyuas lawv txhua tus, thiab tseem tseem sau kuv tus kheej ntau dua li ntawm lawv. Txoj kev no tsis ua haujlwm zoo nrog tib neeg. Qee tus neeg tsis nyiam qhov no. Thiab thaum lawv tswj tsis tau nws, txhua yam kev tsis txaus siab pib. Piv txwv li, ib zaug kuv tau hais kom tsis txhob coding vim tias kuv tau sau ntau code thiab ua rau muaj kev phom sij rau pab pawg, thiab txhua tus tau hnov ​​​​zoo li kev tso dag rau kuv: phooj ywg, yog tias lwm pab pawg ploj mus thiab kuv tseem sau code, koj 'yuav tsuas poob ib nrab pawg. Ntawm qhov tod tes, yog tias kuv sau cov lej thiab koj poob ib nrab ntawm pab pawg, qhov ntawd zoo li kev tswj hwm tsis zoo. Kuv yeej tsis xav txog nws tiag tiag, tsis tau tham txog nws, tab sis nws tseem nyob qhov twg hauv kuv lub taub hau. Qhov kev xav tau tig rov qab ntawm kuv lub siab: "Koj puas yog txhua tus kidding kuv?" Yog li, qhov teeb meem loj tshaj plaws yog kuv thiab kuv txoj kev sib raug zoo nrog tib neeg. Tam sim no kuv nkag siab kuv tus kheej zoo dua, Kuv yog ib pab neeg ua haujlwm rau cov programmer tau ntev, thiab tam sim no kuv qhia ncaj qha rau tib neeg: koj paub, kuv yog leej twg, thiab koj yuav tau nrog kuv - nws puas yog kuv sawv. ntawm no? Thiab thaum lawv pib nrog nws, txhua yam ua haujlwm. Qhov tseeb, kuv tsis yog qhov phem lossis qhov zoo, kuv tsis muaj kev xav phem lossis kev xav qia dub, nws tsuas yog kuv lub ntsiab lus xwb, thiab kuv yuav tsum ua neej nyob nrog qee yam.

Andrei: Tsis ntev los no txhua leej txhua tus tau pib tham txog kev paub txog tus kheej rau introverts, thiab kev txawj muag muag feem ntau. Koj tuaj yeem hais li cas txog qhov no?

Cliff: Yog lawm, qhov ntawd yog qhov kev nkag siab thiab zaj lus qhia uas kuv tau kawm los ntawm kuv txoj kev sib nrauj ntawm kuv tus poj niam. Qhov kuv kawm los ntawm kev sib nrauj yog to taub kuv tus kheej. Nov yog qhov kuv pib nkag siab lwm tus. Nkag siab tias qhov kev sib tshuam no ua haujlwm li cas. Qhov no coj mus nrhiav tau ib tug tom qab lwm. Muaj kev paub txog kuv yog leej twg thiab qhov kuv sawv cev. Kuv ua dab tsi: txawm tias kuv tau ua haujlwm rau kuv, lossis kuv zam kev tsis sib haum xeeb, lossis lwm yam - thiab qhov kev paub txog tus kheej no yeej pab tswj kuv tus kheej. Tom qab no txhua yam mus yooj yim dua. Ib yam uas kuv pom tsis tau tsuas yog hauv kuv tus kheej xwb, tab sis kuj nyob hauv lwm tus programmers yog qhov tsis muaj peev xwm hais lus xav thaum koj nyob hauv kev ntxhov siab. Piv txwv li, koj zaum nyob rau hauv coding, nyob rau hauv lub xeev ntawm ntws, thiab ces lawv los khiav rau koj thiab pib qw nyob rau hauv hysterics tias ib yam dab tsi puas lawm thiab tam sim no hnyav ntsuas yuav raug coj tawm tsam koj. Thiab koj tsis tuaj yeem hais ib lo lus vim tias koj nyob hauv lub xeev ntawm kev ntxhov siab. Cov kev paub uas tau txais tso cai rau koj los npaj rau lub sijhawm no, muaj sia nyob thiab txav mus rau txoj kev npaj tawm, tom qab ntawd koj tuaj yeem ua qee yam. Yog li yog, thaum koj pib paub tias nws ua haujlwm li cas, nws yog qhov kev hloov pauv lub neej loj heev. 
Kuv tus kheej tsis tuaj yeem nrhiav cov lus zoo, tab sis kuv nco qab qhov ua ntu zus. Lub ntsiab lus yog qhov kev tawm tsam no ntau npaum li lub cev raws li nws hais lus, thiab koj xav tau qhov chaw. Qhov chaw zoo li no, hauv kev nkag siab Zen. Qhov no yog raws nraim qhov yuav tsum tau piav qhia, thiab tom qab ntawd tso tseg tam sim ntawd - lub cev tawm mus deb. Thaum kuv nyob twj ywm tsis hais lus, kuv tuaj yeem ua qhov xwm txheej ntawm kev xav. Raws li adrenaline nkag mus rau koj lub hlwb, hloov koj mus rau hauv kev sib ntaus sib tua lossis kev sib ntaus sib tua, koj tsis tuaj yeem hais ib yam dab tsi ntxiv, tsis yog - tam sim no koj yog ib tus neeg ruam, tus kws ua haujlwm whipping, tsis muaj peev xwm teb tau zoo lossis txawm nres nres, thiab tus neeg tawm tsam dawb rov tua dua. Koj yuav tsum xub ua koj tus kheej dua, rov tswj tau, tawm ntawm "sib ntaus lossis ya" hom.

Thiab rau qhov no peb xav tau qhov chaw hais lus. Tsuas yog qhov chaw dawb xwb. Yog tias koj hais dab tsi txhua, ces koj tuaj yeem hais raws nraim, thiab tom qab ntawd mus thiab nrhiav "qhov chaw" rau koj tus kheej: mus taug kev hauv lub tiaj ua si, kaw koj tus kheej hauv da dej - tsis muaj teeb meem. Qhov tseem ceeb tshaj plaws yog txiav tawm ib ntus ntawm qhov xwm txheej ntawd. Thaum koj hloov tawm yam tsawg kawg ob peb vib nas this, tswj rov qab, koj pib xav soberly. "Okay, Kuv tsis yog qee yam neeg vwm, Kuv tsis ua tej yam ruam, Kuv yog ib tus neeg muaj txiaj ntsig zoo." Thaum koj muaj peev xwm ntseeg tau koj tus kheej, nws yog lub sijhawm los mus rau theem tom ntej: nkag siab txog qhov tshwm sim. Koj raug tawm tsam, qhov kev tawm tsam los ntawm qhov chaw koj tsis xav tau nws, nws yog kev tsis ncaj ncees, kev lim hiam. Qhov no phem. Cov kauj ruam tom ntej yog kom nkag siab tias vim li cas tus neeg tawm tsam xav tau qhov no. Tiag tiag, yog vim li cas? Tej zaum vim nws tus kheej npau taws? Ua cas nws chim? Piv txwv li, vim nws ua rau nws tus kheej thiab tsis tuaj yeem lees txais lub luag haujlwm? Qhov no yog txoj hauv kev ua tib zoo tuav tag nrho qhov xwm txheej. Tab sis qhov no yuav tsum muaj chaw rau maneuver, hais lus chaw. Thawj kauj ruam yog los rhuav tshem qhov kev sib tham. Tsis txhob sib tham nrog cov lus. Tso tseg nws, taug kev sai li sai tau. Yog hais tias nws yog kev sib tham hauv xov tooj, cia li dai - qhov no yog ib qho txuj ci uas kuv tau kawm los ntawm kev sib txuas lus nrog kuv tus qub poj niam. Yog hais tias qhov kev sib tham tsis mus qhov twg zoo, tsuas yog hais "goodbye" thiab hang up. Los ntawm sab nraud ntawm lub xov tooj: "blah blah blah", koj teb: "yog, nyob zoo!" thiab nyob twj ywm. Koj tsuas yog xaus qhov kev sib tham. Tsib feeb tom qab, thaum lub peev xwm xav tau rov qab los rau koj, koj tau txias me ntsis, nws tuaj yeem xav txog txhua yam, dab tsi tshwm sim thiab yuav tshwm sim tom ntej. Thiab pib tsim cov lus teb rau kev xav, es tsis yog tsuas yog xav tawm ntawm kev xav. Rau kuv, kev paub txog tus kheej yog qhov tseeb tias thaum muaj kev ntxhov siab hauv kev xav kuv tsis tuaj yeem hais lus. Tau tawm ntawm lub xeev no, xav thiab npaj yuav ua li cas teb thiab them nyiaj rau cov teeb meem - cov no yog cov kauj ruam zoo thaum koj hais tsis tau. Txoj kev yooj yim tshaj plaws yog khiav tawm ntawm qhov xwm txheej uas kev ntxhov siab tshwm sim nws tus kheej thiab tsuas yog tsis koom nrog qhov kev ntxhov siab no. Tom qab ntawd koj tuaj yeem xav, thaum koj tuaj yeem xav, koj tuaj yeem hais lus, thiab lwm yam.

Los ntawm txoj kev, hauv tsev hais plaub, tus kws lij choj tawm tsam sim ua qhov no rau koj - tam sim no nws paub meej vim li cas. Vim nws muaj peev xwm txwv koj mus rau lub xeev uas koj tsis tuaj yeem hais koj lub npe, piv txwv li. Nyob rau hauv qhov tseeb, koj yuav tsis muaj peev xwm hais lus. Yog tias qhov no tshwm sim rau koj, thiab yog tias koj paub tias koj yuav pom koj tus kheej hauv qhov chaw uas hais lus sib ntaus sib tua, hauv qhov chaw zoo li lub tsev hais plaub, ces koj tuaj yeem nrog koj tus kws lij choj. Tus kws lij choj yuav sawv ntsug rau koj thiab nres qhov kev hais lus tawm tsam, thiab yuav ua raws li txoj cai lij choj, thiab qhov chaw Zen ploj yuav rov qab los rau koj. Piv txwv li, kuv yuav tsum hu kuv tsev neeg ob peb zaug, tus kws txiav txim plaub ntug zoo siab heev txog qhov no, tab sis tus kws lij choj tawm tsam tau qw thiab qw rau kuv, Kuv tsis tuaj yeem tau txais ib lo lus ntawm ntug. Hauv cov xwm txheej no, kev siv tus neeg nruab nrab ua haujlwm zoo tshaj rau kuv. Tus neeg nruab nrab nres tag nrho cov kev ntxhov siab no uas yog nchuav rau koj hauv cov kwj deg tas mus li, koj pom qhov chaw Zen tsim nyog, thiab nrog nws muaj peev xwm hais lus rov qab los. Qhov no yog tag nrho cov kev paub uas muaj ntau yam los kawm, ntau yam kom pom nyob rau hauv koj tus kheej, thiab tag nrho cov no hloov mus rau hauv kev txiav txim siab theem siab uas txawv rau cov neeg sib txawv. Qee tus neeg tsis muaj teeb meem tau piav qhia saum toj no; feem ntau, cov neeg ua haujlwm muag khoom tsis muaj lawv. Tag nrho cov neeg no uas ua rau lawv nyob nrog cov lus - cov neeg hu nkauj nto moo, kws sau paj huam, cov thawj coj kev ntseeg thiab cov nom tswv, lawv ib txwm muaj qee yam hais. Lawv tsis muaj teeb meem li ntawd, tab sis kuv ua.

Andrei: Nws yog ... npaj txhij txog. Zoo heev, peb twb tau tham ntau heev thiab nws yog lub sijhawm los xaus qhov kev xam phaj no. Peb yeej yuav ntsib ntawm lub rooj sib tham thiab yuav muaj peev xwm txuas ntxiv qhov kev sib tham no. Pom koj ntawm Hydra!

Koj tuaj yeem txuas ntxiv koj qhov kev sib tham nrog Cliff ntawm Hydra 2019 lub rooj sib tham, uas yuav muaj rau Lub Xya Hli 11-12, 2019 hauv St. Nws yuav tuaj nrog daim ntawv qhia "Lub Azul Hardware Transactional Memory kev paub". Daim pib tuaj yeem yuav nyob rau lub vas sab nom tswv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib