Nla lodo Cliff Tẹ, baba JIT akopo ni Java

Nla lodo Cliff Tẹ, baba JIT akopo ni JavaCliff Tẹ - CTO ti Cratus (awọn sensọ IoT fun ilọsiwaju ilana), oludasile ati olupilẹṣẹ ti ọpọlọpọ awọn ibẹrẹ (pẹlu Ile-iwe Realtime Rocket, Neurensic ati H2O.ai) pẹlu ọpọlọpọ awọn ijade aṣeyọri. Cliff kowe olupilẹṣẹ akọkọ rẹ ni ọjọ-ori 15 (Pascal fun TRS Z-80)! O mọ julọ fun iṣẹ rẹ lori C2 ni Java (Okun ti Nodes IR). Olupilẹṣẹ yii fihan agbaye pe JIT le ṣe agbejade koodu ti o ni agbara giga, eyiti o jẹ ọkan ninu awọn okunfa ninu ifarahan Java bi ọkan ninu awọn iru ẹrọ sọfitiwia igbalode akọkọ. Lẹhinna Cliff ṣe iranlọwọ fun Azul Systems lati kọ ipilẹ akọkọ 864-core pẹlu sọfitiwia Java mimọ ti o ṣe atilẹyin awọn idaduro GC lori okiti gigagabyte 500 laarin 10 milliseconds. Ni gbogbogbo, Cliff ṣakoso lati ṣiṣẹ lori gbogbo awọn ẹya ti JVM.

 
Habrapost yii jẹ ifọrọwanilẹnuwo nla pẹlu Cliff. A yoo sọrọ lori awọn akọle wọnyi:

  • Iyipada si awọn iṣapeye ipele kekere
  • Bi o ṣe le ṣe atunṣe nla kan
  • Awoṣe iye owo
  • Ikẹkọ iṣapeye ipele kekere
  • Awọn apẹẹrẹ to wulo ti ilọsiwaju iṣẹ
  • Kini idi ti o ṣẹda ede siseto tirẹ
  • Performance Engineer Career
  • Imọ italaya
  • Diẹ diẹ nipa iforukọsilẹ ipin ati ọpọlọpọ awọn ohun kohun
  • Ipenija ti o tobi julọ ni igbesi aye

Ifọrọwanilẹnuwo naa jẹ nipasẹ:

  • Andrey Satarin lati Amazon Web Services. Ninu iṣẹ rẹ, o ṣakoso lati ṣiṣẹ ni awọn iṣẹ akanṣe ti o yatọ patapata: o ṣe idanwo NewSQL pinpin data ni Yandex, eto wiwa awọsanma ni Kaspersky Lab, ere elere pupọ ni Mail.ru ati iṣẹ kan fun iṣiro awọn idiyele paṣipaarọ ajeji ni Deutsche Bank. Nife ninu idanwo ẹhin iwọn-nla ati awọn eto pinpin.
  • Vladimir Sitnikov lati Netcracker. Ọdun mẹwa ti iṣẹ lori iṣẹ ati iwọn ti NetCracker OS, sọfitiwia ti awọn oniṣẹ tẹlifoonu lo lati ṣe adaṣe nẹtiwọki ati awọn ilana iṣakoso ohun elo nẹtiwọọki. Nife ninu Java ati Oracle Database awon oran išẹ. Onkọwe ti diẹ sii ju awọn ilọsiwaju iṣẹ ṣiṣe mejila ninu awakọ PostgreSQL JDBC osise.

Iyipada si awọn iṣapeye ipele kekere

Andrei: O jẹ orukọ nla ni agbaye ti akopọ JIT, Java, ati iṣẹ ṣiṣe ni gbogbogbo, otun? 

Òkè: O dabi iyẹn!

Andrei: Jẹ ki a bẹrẹ pẹlu awọn ibeere gbogbogbo nipa iṣẹ ṣiṣe. Kini o ro nipa yiyan laarin ipele giga ati awọn iṣapeye ipele kekere bi ṣiṣẹ ni ipele Sipiyu?

Òkè: Bẹẹni, ohun gbogbo rọrun nibi. Koodu ti o yara ju ni eyi ti ko ṣiṣẹ rara. Nitorinaa, o nilo nigbagbogbo lati bẹrẹ lati ipele giga, ṣiṣẹ lori awọn algoridimu. Akọsilẹ O ti o dara julọ yoo lu ami akiyesi O ti o buru ju, ayafi ti diẹ ninu awọn alakan to tobi to laja. Awọn nkan ipele kekere lọ kẹhin. Ni deede, ti o ba ti ṣe iṣapeye iyoku akopọ rẹ daradara to ati pe diẹ ninu awọn nkan ti o nifẹ si tun wa, ipele kekere niyẹn. Ṣugbọn bi o ṣe le bẹrẹ lati ipele giga kan? Bawo ni o ṣe mọ pe iṣẹ ipele giga ti o to ni a ti ṣe? Daradara... ko si ọna. Ko si awọn ilana ti a ti ṣetan. O nilo lati ni oye iṣoro naa, pinnu ohun ti iwọ yoo ṣe (ki o má ba ṣe awọn igbesẹ ti ko ni dandan ni ojo iwaju) ati lẹhinna o le ṣii profaili, eyi ti o le sọ nkan ti o wulo. Ni aaye kan, iwọ tikararẹ mọ pe o ti yọkuro awọn nkan ti ko wulo ati pe o to akoko lati ṣe diẹ ninu awọn atunṣe didara ipele kekere. Eyi jẹ pato iru aworan pataki kan. Ọpọlọpọ eniyan lo n ṣe awọn nkan ti ko wulo, ṣugbọn gbigbe ni iyara ti wọn ko ni akoko lati ṣe aniyan nipa iṣelọpọ. Ṣugbọn eyi jẹ titi ti ibeere naa yoo fi dide ni gbangba. Nigbagbogbo 99% ti akoko ko si ẹnikan ti o bikita ohun ti Mo ṣe, titi di akoko ti ohun pataki kan wa pẹlu ọna pataki ti ko si ẹnikan ti o bikita. Ati pe nibi gbogbo eniyan bẹrẹ lati ṣagbe rẹ nipa “kilode ti ko ṣiṣẹ ni pipe lati ibẹrẹ.” Ni gbogbogbo, ohunkan nigbagbogbo wa lati ni ilọsiwaju ninu iṣẹ. Ṣugbọn 99% ti akoko ti o ko ni awọn itọsọna! O kan n gbiyanju lati jẹ ki nkan ṣiṣẹ ati ninu ilana o rii ohun ti o ṣe pataki. O ko le mọ tẹlẹ pe nkan yii nilo lati jẹ pipe, nitorinaa, ni otitọ, o ni lati jẹ pipe ni ohun gbogbo. Ṣugbọn eyi ko ṣee ṣe ati pe o ko ṣe. Nigbagbogbo ọpọlọpọ awọn nkan wa lati ṣatunṣe - ati pe iyẹn jẹ deede.

Bi o ṣe le ṣe atunṣe nla kan

Andrei: Bawo ni o ṣe n ṣiṣẹ lori iṣẹ kan? Eyi jẹ iṣoro gige-agbelebu. Fun apẹẹrẹ, Njẹ o ti ni lati ṣiṣẹ lori awọn iṣoro ti o dide lati ikorita ti ọpọlọpọ awọn iṣẹ ṣiṣe ti o wa tẹlẹ?

Òkè: Mo gbiyanju lati yago fun o. Ti MO ba mọ pe iṣẹ ṣiṣe yoo jẹ ọran, Mo ronu nipa rẹ ṣaaju ki Mo bẹrẹ ifaminsi, paapaa pẹlu awọn ẹya data. Ṣugbọn nigbagbogbo o ṣe iwari gbogbo eyi nigbamii. Ati lẹhinna o ni lati lọ si awọn iwọn to gaju ki o ṣe ohun ti Mo pe “tunkọ ki o ṣẹgun”: o nilo lati gba nkan ti o tobi to. Diẹ ninu koodu naa yoo tun ni lati tun kọ nitori awọn iṣoro iṣẹ tabi nkan miiran. Ohunkohun ti idi fun atunkọ koodu, o jẹ fere nigbagbogbo dara lati tun kan ti o tobi nkan ju kan kere nkan. Ni akoko yii, gbogbo eniyan bẹrẹ gbigbọn pẹlu iberu: “Oh Ọlọrun mi, iwọ ko le fi ọwọ kan koodu pupọ!” Ṣugbọn ni otitọ, ọna yii fẹrẹ ṣiṣẹ nigbagbogbo dara julọ. O nilo lati mu iṣoro nla kan lẹsẹkẹsẹ, fa iyika nla ni ayika rẹ ki o sọ pe: Emi yoo tun kọ ohun gbogbo ninu Circle naa. Aala naa kere pupọ ju akoonu inu rẹ lọ ti o nilo lati paarọ rẹ. Ati pe ti iru iyasọtọ ti awọn aala gba ọ laaye lati ṣe iṣẹ inu ni pipe, ọwọ rẹ ni ominira, ṣe ohun ti o fẹ. Ni kete ti o ba loye iṣoro naa, ilana atunkọ jẹ rọrun pupọ, nitorinaa jẹjẹ nla kan!
Ni akoko kanna, nigbati o ba ṣe atunkọ nla kan ati ki o mọ pe iṣẹ yoo jẹ ọrọ kan, o le bẹrẹ aibalẹ nipa rẹ lẹsẹkẹsẹ. Eyi nigbagbogbo yipada si awọn nkan ti o rọrun bii “maṣe daakọ data, ṣakoso data ni irọrun bi o ti ṣee, jẹ ki o kere.” Ni awọn atunko nla, awọn ọna boṣewa wa lati mu ilọsiwaju ṣiṣẹ. Ati pe wọn fẹrẹ nigbagbogbo yika data.

Awoṣe iye owo

Andrei: Ninu ọkan ninu awọn adarọ-ese ti o sọrọ nipa awọn awoṣe idiyele ni ipo ti iṣelọpọ. Ṣe o le ṣalaye kini o tumọ nipasẹ eyi?

Òkè: Dajudaju. Mo ti a bi ni ohun akoko nigba ti isise iṣẹ wà lalailopinpin pataki. Ati pe akoko yii tun pada - ayanmọ kii ṣe laisi irony. Mo bẹ̀rẹ̀ sí gbé lákòókò àwọn ẹ̀rọ abánáṣiṣẹ́ mẹ́jọ; kọ̀ǹpútà àkọ́kọ́ mi ṣiṣẹ́ pẹ̀lú 256 bytes. Gangan baiti. Ohun gbogbo ti wà gan kekere. Awọn ilana ni lati ka, ati pe bi a ṣe bẹrẹ gbigbe soke akopọ ede siseto, awọn ede ti n tẹsiwaju siwaju ati siwaju sii. Assembler wa, lẹhinna Ipilẹ, lẹhinna C, ati C ṣe abojuto ọpọlọpọ awọn alaye, bii ipin iforukọsilẹ ati yiyan itọnisọna. Ṣugbọn ohun gbogbo jẹ kedere nibẹ, ati pe ti MO ba ṣe itọka si apẹẹrẹ ti oniyipada, lẹhinna Emi yoo gba fifuye, ati pe iye owo ilana yii jẹ mimọ. Ohun elo naa ṣe agbejade nọmba kan ti awọn iyipo ẹrọ, nitorinaa iyara ipaniyan ti awọn nkan oriṣiriṣi le ṣe iṣiro ni irọrun nipa fifi gbogbo awọn ilana ti iwọ yoo ṣiṣẹ. Ifiwera kọọkan / idanwo / ẹka / ipe / fifuye / ile itaja le ṣafikun si oke ati sọ pe: iyẹn ni akoko ipaniyan fun ọ. Nigbati o ba n ṣiṣẹ ni ilọsiwaju iṣẹ, dajudaju iwọ yoo san ifojusi si awọn nọmba wo ni ibamu si awọn akoko gbigbona kekere. 
Ṣugbọn ni kete ti o yipada si Java, Python ati awọn nkan ti o jọra, o yara yarayara kuro ni ohun elo ipele kekere. Kini idiyele ti pipe getter ni Java? Ti JIT ni HotSpot ba tọ inlined, yoo kojọpọ, ṣugbọn ti ko ba ṣe eyi, yoo jẹ ipe iṣẹ kan. Niwọn bi ipe naa ti wa lori lupu gbigbona, yoo dojuiwọn gbogbo awọn iṣapeye miiran ni lupu yẹn. Nitorinaa, idiyele gidi yoo ga pupọ. Ati pe o padanu agbara lẹsẹkẹsẹ lati wo nkan ti koodu ati loye pe o yẹ ki a ṣiṣẹ ni awọn ofin ti iyara aago ero isise, iranti ati kaṣe ti a lo. Gbogbo eyi di ohun ti o nifẹ nikan ti o ba wọle si iṣẹ naa gaan.
Bayi a rii ara wa ni ipo nibiti awọn iyara ero isise ko ti pọ si fun ọdun mẹwa. Awọn ọjọ atijọ ti pada! O le ko to gun gbekele lori ti o dara nikan-asapo išẹ. Ṣugbọn ti o ba lojiji wọle sinu iṣiro afiwera, o nira iyalẹnu, gbogbo eniyan n wo ọ bi James Bond. Awọn isare igba mẹwa nibi nigbagbogbo waye ni awọn aaye nibiti ẹnikan ti ba nkan kan jẹ. Concurrency nilo iṣẹ pupọ. Lati gba iyara XNUMXx yẹn, o nilo lati loye awoṣe idiyele naa. Kini ati Elo ni idiyele? Ati lati ṣe eyi, o nilo lati ni oye bi ahọn ṣe baamu lori ohun elo ti o wa labẹ.
Martin Thompson yan ọrọ nla kan fun bulọọgi rẹ Darí Anu! O nilo lati ni oye kini ohun elo yoo ṣe, bii gangan yoo ṣe, ati idi ti o ṣe ohun ti o ṣe ni ibẹrẹ. Lilo eyi, o rọrun pupọ lati bẹrẹ kika awọn ilana ati ṣiṣero ibi ti akoko ipaniyan n lọ. Ti o ko ba ni ikẹkọ ti o yẹ, o kan n wa ologbo dudu ni yara dudu kan. Mo rii awọn eniyan ti n ṣatunṣe iṣẹ ṣiṣe ni gbogbo igba ti wọn ko ni imọran kini apaadi ti wọn n ṣe. Wọn jiya pupọ ati pe wọn ko ni ilọsiwaju pupọ. Ati pe nigbati mo ba gba nkan koodu kanna, isokuso ni awọn hakii kekere meji kan ati ki o gba iyara marun tabi mẹwa, wọn dabi: daradara, iyẹn ko tọ, a ti mọ pe o dara julọ. Iyalẹnu. Kini Mo n sọrọ nipa ... awoṣe iye owo jẹ nipa iru koodu ti o kọ ati bi o ṣe yarayara ni apapọ ni aworan nla.

Andrei: Ati bawo ni o ṣe le pa iru iwọn didun bẹ si ori rẹ? Ṣe eyi waye pẹlu iriri diẹ sii, tabi? Ibo ni iru iriri bẹẹ ti wa?

Òkè: Daradara, Emi ko gba iriri mi ni ọna ti o rọrun julọ. Mo ti ṣe eto ni Apejọ pada ni awọn ọjọ nigbati o le loye gbogbo ẹkọ kan. O ba ndun aimọgbọnwa, ṣugbọn lati igba naa eto ilana Z80 nigbagbogbo wa ninu ori mi, ni iranti mi. Emi ko ranti awọn orukọ eniyan laarin iṣẹju kan ti sisọ, ṣugbọn Mo ranti koodu ti a kọ 40 ọdun sẹyin. O jẹ ẹrin, o dabi aisan kan "omugo onimọ».

Ikẹkọ iṣapeye ipele kekere

Andrei: Ṣe ọna ti o rọrun wa lati wọle?

Òkè: Bẹẹni ati bẹẹkọ. Ohun elo ohun elo ti gbogbo wa lo ko ti yipada pupọ ni akoko pupọ. Gbogbo eniyan lo x86, pẹlu awọn sile ti Arm fonutologbolori. Ti o ko ba ṣe diẹ ninu iru ifibọ hardcore, o n ṣe ohun kanna. O dara, atẹle. Awọn itọnisọna tun ko yipada fun awọn ọgọrun ọdun. O nilo lati lọ kọ nkan ni Apejọ. Ko Elo, sugbon to lati bẹrẹ lati ni oye. O n rẹrin musẹ, ṣugbọn Mo n sọrọ patapata ni pataki. O nilo lati ni oye ibaraenisepo laarin ede ati hardware. Lẹhin iyẹn o nilo lati lọ kọ kekere kan ki o ṣe akopọ ohun-iṣere kekere kan fun ede isere kekere kan. Iru isere tumọ si pe o nilo lati ṣe ni iye akoko ti o ni oye. O le jẹ rọrun pupọ, ṣugbọn o gbọdọ ṣe awọn itọnisọna. Iṣe ti ipilẹṣẹ itọnisọna yoo ṣe iranlọwọ fun ọ lati loye awoṣe idiyele fun afara laarin koodu ipele giga ti gbogbo eniyan kọ ati koodu ẹrọ ti o nṣiṣẹ lori ohun elo. Ifiweranṣẹ yii yoo sun sinu ọpọlọ ni akoko ti a kọ akopọ. Paapaa olupilẹṣẹ ti o rọrun julọ. Lẹhin iyẹn, o le bẹrẹ wiwo Java ati otitọ pe chasm imọ-jinlẹ rẹ jinle pupọ, ati pe o nira pupọ lati kọ awọn afara lori rẹ. Ni Java, o nira pupọ lati ni oye boya afara wa ti jade dara tabi buburu, kini yoo fa ki o ṣubu ati kini kii ṣe. Ṣugbọn o nilo aaye ibẹrẹ kan nibiti o ti wo koodu naa ki o loye: “Bẹẹni, o yẹ ki o wa ni inlin ni gbogbo igba.” Ati lẹhinna o wa ni pe nigbakan eyi ṣẹlẹ, ayafi fun ipo naa nigbati ọna naa ba tobi ju, ati JIT bẹrẹ inlining ohun gbogbo. Awọn iṣẹ ti iru awọn aaye le jẹ asọtẹlẹ lẹsẹkẹsẹ. Nigbagbogbo getters ṣiṣẹ daradara, ṣugbọn lẹhinna o wo awọn losiwajulosehin gbigbona nla ati rii pe awọn ipe iṣẹ kan wa ti n ṣanfo ni ayika nibẹ ti ko mọ ohun ti wọn n ṣe. Eleyi jẹ awọn isoro pẹlu awọn ibigbogbo lilo ti getters, idi ti won ko ba wa ni inlined ni wipe o jẹ ko o boya ti won ba wa a getter. Ti o ba ni ipilẹ koodu kekere ti o ga julọ, o le jiroro ni ranti rẹ lẹhinna sọ pe: eyi jẹ getter, ati pe eyi jẹ oluṣeto kan. Ni ipilẹ koodu nla, iṣẹ kọọkan n gbe itan-akọọlẹ tirẹ, eyiti, ni gbogbogbo, ko mọ ẹnikẹni. Profaili sọ pe a padanu 24% ti akoko lori diẹ ninu lupu ati lati loye kini lupu yii n ṣe, a nilo lati wo iṣẹ kọọkan ninu. Ko ṣee ṣe lati loye eyi laisi kikọ iṣẹ naa, ati pe eyi fa fifalẹ ilana oye. Ti o ni idi ti Emi ko lo getters ati setters, Mo ti de titun kan ipele!
Nibo ni lati gba awoṣe idiyele? O dara, o le ka nkan, nitorinaa… Ṣugbọn Mo ro pe ọna ti o dara julọ ni lati ṣe. Ṣiṣe akopọ kekere yoo jẹ ọna ti o dara julọ lati ni oye awoṣe iye owo ati ki o baamu si ori ti ara rẹ. Akopọ kekere ti yoo dara fun siseto makirowefu jẹ iṣẹ-ṣiṣe fun olubere kan. O dara, Mo tumọ si, ti o ba ti ni awọn ọgbọn siseto, lẹhinna iyẹn yẹ ki o to. Gbogbo nkan wọnyi bii sisọ okun ti o ni bi diẹ ninu iru ikosile algebra, yiyo awọn ilana fun awọn iṣẹ ṣiṣe mathematiki lati ibẹ ni ilana to tọ, mu awọn iye to pe lati awọn iforukọsilẹ - gbogbo eyi ni a ṣe ni ẹẹkan. Ati pe nigba ti o ba ṣe, yoo wa ni titẹ si inu ọpọlọ rẹ. Mo ro pe gbogbo eniyan mọ ohun ti alakojo ṣe. Ati pe eyi yoo funni ni oye ti awoṣe idiyele.

Awọn apẹẹrẹ to wulo ti ilọsiwaju iṣẹ

Andrei: Kini ohun miiran ti o yẹ ki o san ifojusi si nigbati o ṣiṣẹ lori iṣẹ-ṣiṣe?

Òkè: Awọn ẹya data. Nipa ọna, bẹẹni, Emi ko kọ awọn kilasi wọnyi fun igba pipẹ ... Ile-iwe Rocket. O jẹ igbadun, ṣugbọn o nilo igbiyanju pupọ, ati pe Mo tun ni igbesi aye! O DARA. Nitorinaa, ninu ọkan ninu awọn kilasi nla ati ti o nifẹ, “Nibo ni iṣẹ ṣiṣe rẹ lọ,” Mo fun awọn ọmọ ile-iwe ni apẹẹrẹ: gigabytes meji ati idaji ti data fintech ni a ka lati faili CSV kan lẹhinna wọn ni lati ṣe iṣiro nọmba awọn ọja ti o ta. . Deede ami oja data. Awọn akopọ UDP ti yipada si ọna kika ọrọ lati awọn ọdun 70. Chicago Mercantile Exchange - gbogbo iru awọn nkan bi bota, agbado, soybean, awọn nkan bii iyẹn. O jẹ dandan lati ka awọn ọja wọnyi, nọmba awọn iṣowo, iwọn apapọ ti gbigbe awọn owo ati awọn ẹru, ati bẹbẹ lọ. Iṣiro iṣowo ti o rọrun lẹwa: wa koodu ọja (iyẹn awọn ohun kikọ 1-2 ni tabili hash), gba iye naa, ṣafikun si ọkan ninu awọn eto iṣowo, ṣafikun iwọn didun, ṣafikun iye, ati tọkọtaya awọn nkan miiran. Iṣiro ti o rọrun pupọ. Awọn imuse ohun-iṣere jẹ taara taara: ohun gbogbo wa ninu faili kan, Mo ka faili naa ati gbe nipasẹ rẹ, pin awọn igbasilẹ kọọkan sinu awọn okun Java, n wa awọn nkan pataki ninu wọn ati fifi wọn kun ni ibamu si awọn mathimatiki ti a ṣalaye loke. Ati pe o ṣiṣẹ ni iyara kekere kan.

Pẹlu ọna yii, o han gbangba kini ohun ti n ṣẹlẹ, ati iširo afiwera kii yoo ṣe iranlọwọ, otun? O wa ni pe ilosoke marun-un ninu iṣẹ le ṣee ṣe ni irọrun nipa yiyan awọn ẹya data to tọ. Ati pe eyi ṣe iyanilẹnu paapaa awọn olupilẹṣẹ ti o ni iriri! Ninu ọran mi pato, ẹtan ni pe o ko yẹ ki o ṣe awọn ipin iranti ni lupu ti o gbona. O dara, eyi kii ṣe gbogbo otitọ, ṣugbọn ni gbogbogbo - o ko yẹ ki o ṣe afihan “lẹẹkan ni X” nigbati X tobi to. Nigbati X jẹ gigabytes meji ati idaji, iwọ ko gbọdọ pin ohunkohun “lẹẹkan fun lẹta”, tabi “lẹẹkan fun laini”, tabi “lẹẹkan fun aaye”, ohunkohun bi iyẹn. Eyi ni ibi ti akoko ti lo. Bawo ni eyi paapaa ṣiṣẹ? Fojuinu mi ṣe ipe kan String.split() tabi BufferedReader.readLine(). Readline mu ki a okun lati kan ti ṣeto ti awọn baiti ti o wá lori awọn nẹtiwọki, ni kete ti fun kọọkan ila, fun kọọkan ninu awọn ogogorun milionu ti ila. Mo gba laini yii, ṣagbe rẹ ki o sọ ọ nù. Kini idi ti MO fi ju silẹ - daradara, Mo ti ṣe ilana rẹ tẹlẹ, iyẹn ni gbogbo rẹ. Nitorinaa, fun awọn baiti kọọkan ti a ka lati 2.7G wọnyi, awọn ohun kikọ meji ni yoo kọ sinu laini, iyẹn ni, tẹlẹ 5.4G, ati pe Emi ko nilo wọn fun ohunkohun siwaju sii, nitorinaa wọn ju silẹ. Ti o ba wo bandiwidi iranti, a fifuye 2.7G ti o lọ nipasẹ iranti ati iranti akero ni ero isise, ati ki o si lemeji bi Elo rán si awọn ila eke ni iranti, ati gbogbo eyi ti wa ni frayed nigbati kọọkan titun ila ti wa ni da. Ṣugbọn Mo nilo lati ka, ohun elo naa ka, paapaa ti ohun gbogbo ba bajẹ nigbamii. Ati pe Mo ni lati kọ silẹ nitori Mo ṣẹda laini kan ati pe awọn kaṣe ti kun - kaṣe ko le gba 2.7G. Nitorinaa, fun gbogbo baiti ti Mo ka, Mo ka awọn baiti meji diẹ sii ati kọ awọn baiti meji diẹ sii, ati ni ipari wọn ni ipin 4: 1 - ni ipin yii a n pa bandiwidi iranti jafara. Ati lẹhinna o wa ni pe ti MO ba ṣe String.split() - Eyi kii ṣe akoko ikẹhin ti Mo ṣe eyi, awọn aaye 6-7 miiran le wa ninu. Nitorinaa koodu Ayebaye ti kika CSV ati lẹhinna itupalẹ awọn gbolohun ọrọ ni abajade isonu bandiwidi iranti kan ti o to 14: 1 ni ibatan si ohun ti iwọ yoo fẹ lati ni gaan. Ti o ba jabọ awọn yiyan wọnyi, o le gba iyara iyara marun-un.

Ati pe kii ṣe pe o nira. Ti o ba wo koodu lati igun ọtun, gbogbo rẹ di ohun rọrun ni kete ti o ba mọ iṣoro naa. Iwọ ko yẹ ki o dawọ pinpin iranti lapapọ: iṣoro nikan ni pe o pin nkan kan ati pe o ku lẹsẹkẹsẹ, ati ni ọna ti o sun ohun elo pataki kan, eyiti ninu ọran yii jẹ bandiwidi iranti. Ati gbogbo eyi ni abajade ni idinku ninu iṣelọpọ. Lori x86 o nilo nigbagbogbo lati sun awọn iyipo ero isise, ṣugbọn nibi o sun gbogbo iranti ni iṣaaju. Ojutu ni lati dinku iye idasilẹ. 
Apa miiran ti iṣoro naa ni pe ti o ba ṣiṣẹ profaili nigbati adikala iranti ba jade, ni kete ti o ba ṣẹlẹ, o nigbagbogbo n duro de kaṣe lati pada wa nitori pe o kun fun idoti ti o kan ṣe, gbogbo awọn laini yẹn. Nitorinaa, gbogbo ẹru tabi iṣẹ ile itaja di o lọra, nitori wọn yorisi kaṣe padanu - gbogbo kaṣe ti di o lọra, nduro fun idoti lati lọ kuro. Nitorinaa, olupilẹṣẹ yoo kan ṣafihan ariwo laileto gbona ti o fọ jakejado gbogbo lupu - kii yoo si itọnisọna gbona lọtọ tabi aaye ninu koodu naa. Ariwo nikan. Ati pe ti o ba wo awọn iyipo GC, gbogbo wọn jẹ iran ọdọ ati iyara pupọ - microseconds tabi milliseconds o pọju. Lẹhinna, gbogbo iranti yii ku lẹsẹkẹsẹ. O ya awọn ọkẹ àìmọye gigabytes, o si ge wọn, o ge wọn, o tun ge wọn lẹẹkansi. Gbogbo eyi ṣẹlẹ ni kiakia. O wa ni jade wipe o wa poku GC iyika, gbona ariwo pẹlú gbogbo ọmọ, sugbon a fẹ lati gba a 5x speedup. Ni akoko yii, ohun kan yẹ ki o tii si ori rẹ ki o dun: “kilode ti eyi?!” Aponsedanu rinhoho iranti ko ṣe afihan ni yokokoro Ayebaye; o nilo lati ṣiṣẹ counter debugger iṣẹ ohun elo ki o rii funrararẹ ati taara. Ṣugbọn eyi ko le fura taara lati awọn aami aisan mẹta wọnyi. Awọn aami aisan kẹta ni nigbati o ba wo ohun ti o ṣe afihan, beere lọwọ profaili, o si dahun pe: "O ṣe awọn ori ila bilionu kan, ṣugbọn GC ṣiṣẹ fun ọfẹ." Ni kete ti eyi ba ṣẹlẹ, o rii pe o ti ṣẹda ọpọlọpọ awọn nkan ati jona gbogbo ọna iranti. Ọna kan wa lati ṣawari eyi, ṣugbọn kii ṣe kedere. 

Iṣoro naa wa ninu eto data: eto igboro ti o wa labẹ ohun gbogbo ti o ṣẹlẹ, o tobi ju, o jẹ 2.7G lori disiki, nitorinaa ṣiṣe ẹda nkan yii jẹ aifẹ pupọ - o fẹ lati gbejade lati ifipamọ baiti nẹtiwọọki lẹsẹkẹsẹ sinu awọn iforukọsilẹ, ki o má ba ka-kọ si ila pada ati siwaju ni igba marun. Laanu, Java ko fun ọ ni iru ile-ikawe bii apakan ti JDK nipasẹ aiyipada. Ṣugbọn eyi jẹ ohun kekere, otun? Ni pataki, iwọnyi jẹ awọn laini koodu 5-10 ti yoo ṣee lo lati ṣe imuse agberu okun buffered tirẹ, eyiti o tun ṣe ihuwasi ti kilasi okun, lakoko ti o jẹ ipari ni ayika ifipamọ baiti ti o wa labẹ. Bi abajade, o han pe o n ṣiṣẹ fẹrẹẹ bi ẹnipe pẹlu awọn okun, ṣugbọn ni otitọ awọn itọka si ifipamọ n gbe sibẹ, ati pe awọn baiti aise ko ni daakọ nibikibi, ati nitorinaa awọn buffers kanna ni a tun lo leralera, ati Inu ẹrọ ṣiṣẹ dun lati mu lori ara rẹ awọn nkan ti o ṣe apẹrẹ fun, bii fifipamọ ilọpo meji ti awọn buffers baiti wọnyi, ati pe iwọ ko tun lọ nipasẹ ṣiṣan ailopin ti data ti ko wulo. Nipa ọna, ṣe o loye pe nigbati o ba n ṣiṣẹ pẹlu GC, o jẹ iṣeduro pe ipin iranti kọọkan kii yoo han si ero isise lẹhin ti o kẹhin GC ọmọ? Nitorinaa, gbogbo eyi ko le ṣee wa ninu kaṣe, ati lẹhinna 100% asannu ti o ni idaniloju waye. Nigbati o ba n ṣiṣẹ pẹlu itọka kan, lori x86, iyokuro iforukọsilẹ lati iranti gba awọn akoko aago 1-2, ati ni kete ti eyi ba ṣẹlẹ, o sanwo, sanwo, sanwo, nitori iranti wa ni gbogbo rẹ. Awọn caches mẹsan - ati pe eyi ni idiyele ti ipin iranti. Iye gidi.

Ni awọn ọrọ miiran, awọn ẹya data jẹ ohun ti o nira julọ lati yipada. Ati ni kete ti o ba mọ pe o ti yan eto data ti ko tọ ti yoo pa iṣẹ ṣiṣe nigbamii, ọpọlọpọ awọn iṣẹ wa lati ṣee ṣe, ṣugbọn ti o ko ba ṣe bẹ, awọn nkan yoo buru si. Ni akọkọ, o nilo lati ronu nipa awọn ẹya data, eyi jẹ pataki. Iye idiyele akọkọ nibi ṣubu lori awọn ẹya data ọra, eyiti o bẹrẹ lati ṣee lo ni ara ti “Mo daakọ igbekalẹ data X sinu igbekalẹ data Y nitori Mo fẹran apẹrẹ Y dara julọ.” Ṣugbọn iṣẹ daakọ naa (eyiti o dabi olowo poku) ni otitọ bandiwidi iranti danu ati pe ni ibiti gbogbo akoko ipaniyan ti o padanu ti sin. Ti Mo ba ni okun nla ti JSON ati pe Mo fẹ lati yi i pada si igi DOM ti a ṣeto ti POJOs tabi nkankan, iṣẹ ṣiṣe ti sisọ okun yẹn ati kikọ POJO naa, lẹhinna wọle si POJO lẹẹkansi nigbamii, yoo ja si idiyele ti ko wulo - o jẹ ko poku. Ayafi ti o ba ti o ba ṣiṣe ni ayika POJOs kan Pupo diẹ sii ju igba ti o nṣiṣẹ ni ayika kan okun. Pa ọwọ, o le dipo gbiyanju lati decrypt okun ati jade nikan ohun ti o nilo lati ibẹ, lai titan si eyikeyi POJO. Ti gbogbo eyi ba ṣẹlẹ lori ọna lati eyiti o nilo iṣẹ ṣiṣe ti o pọju, ko si POJOs fun ọ, o nilo lati ma wà sinu laini taara taara.

Kini idi ti o ṣẹda ede siseto tirẹ

Andrei: O sọ pe lati le ni oye awoṣe idiyele, o nilo lati kọ ede kekere tirẹ…

Òkè: Kii ṣe ede, ṣugbọn akopọ. Ede ati alakojo jẹ nkan meji ti o yatọ. Iyatọ pataki julọ ni ori rẹ. 

Andrei: Nipa ọna, niwọn bi mo ti mọ, o n ṣe idanwo pẹlu ṣiṣẹda awọn ede tirẹ. Fun kini?

Òkè: Nitori ti mo le! Mo ti feyinti ologbele, nitorina eyi ni ifisere mi. Ni gbogbo igbesi aye mi Mo ti ṣe imuse awọn ede eniyan miiran. Mo tun ṣiṣẹ pupọ lori aṣa ifaminsi mi. Ati nitori pe Mo rii awọn iṣoro ni awọn ede miiran. Mo rii pe awọn ọna ti o dara julọ wa lati ṣe awọn nkan ti o faramọ. Ati Emi yoo lo wọn. O kan rẹ mi lati rii awọn iṣoro ninu ara mi, ni Java, ni Python, ni eyikeyi ede miiran. Mo kọ bayi ni React Native, JavaScript ati Elm bi ifisere ti kii ṣe nipa ifẹhinti, ṣugbọn nipa iṣẹ ṣiṣe. Mo tun kọ ni Python ati, o ṣeese, yoo tẹsiwaju lati ṣiṣẹ lori ẹkọ ẹrọ fun awọn ẹhin Java. Ọpọlọpọ awọn ede olokiki lo wa ati pe gbogbo wọn ni awọn ẹya ti o nifẹ si. Gbogbo eniyan dara ni ọna tirẹ ati pe o le gbiyanju lati mu gbogbo awọn ẹya wọnyi papọ. Nitorinaa, Mo n ka awọn nkan ti o nifẹ si mi, ihuwasi ti ede, ngbiyanju lati wa pẹlu awọn atumọ ti o ni oye. Ati bẹ jina Mo n ṣaṣeyọri! Ni akoko yii Mo n tiraka pẹlu awọn atunmọ iranti, nitori Mo fẹ lati ni bi ni C ati Java, ati gba awoṣe iranti to lagbara ati awọn atunmọ iranti fun awọn ẹru ati awọn ile itaja. Ni akoko kanna, ni ifọkasi iru aifọwọyi bi ni Haskell. Nibi, Mo n gbiyanju lati dapọ Haskell-bi iru inference pẹlu iranti iṣẹ ni mejeji C ati Java. Eyi ni ohun ti Mo ti n ṣe fun awọn oṣu 2-3 sẹhin, fun apẹẹrẹ.

Andrei: Ti o ba kọ ede ti o gba awọn aaye to dara julọ lati awọn ede miiran, ṣe o ro pe ẹnikan yoo ṣe idakeji: mu awọn ero rẹ ki o lo wọn?

Òkè: Eyi ni deede bi awọn ede tuntun ṣe farahan! Kini idi ti Java jẹ iru si C? Nitori C ni kan ti o dara sintasi ti gbogbo eniyan ye ati Java ni atilẹyin nipasẹ yi sintasi, fifi iru ailewu, orun bounds yiyewo, GC, ati awọn ti wọn tun dara si diẹ ninu awọn ohun lati C. Wọn ti fi kun ara wọn. Ṣugbọn wọn ni atilẹyin pupọ pupọ, otun? Gbogbo eniyan duro lori awọn ejika ti awọn omiran ti o wa niwaju rẹ - iyẹn ni ilọsiwaju ti ṣe.

Andrei: Bi mo ṣe ye mi, ede rẹ yoo jẹ iranti ailewu. Njẹ o ti ronu nipa imuse nkan bi oluyẹwo awin lati ipata? Njẹ o ti wo i, kini o ro nipa rẹ?

Òkè: O dara, Mo ti nkọ C fun awọn ọjọ-ori, pẹlu gbogbo malloc yii ati ọfẹ, ati iṣakoso pẹlu ọwọ ni igbesi aye. O mọ, 90-95% ti akoko iṣakoso pẹlu ọwọ ni eto kanna. Ati pe o jẹ gidigidi, irora pupọ lati ṣe pẹlu ọwọ. Emi yoo fẹ ki olupilẹṣẹ naa sọ fun ọ ohun ti n ṣẹlẹ nibẹ ati ohun ti o ṣaṣeyọri pẹlu awọn iṣe rẹ. Fun diẹ ninu awọn ohun, oluṣayẹwo oluyawo ṣe eyi lati inu apoti. Ati pe o yẹ ki o ṣafihan alaye laifọwọyi, loye ohun gbogbo, ati paapaa kii ṣe ẹru mi pẹlu fifihan oye yii. O gbọdọ ṣe o kere ju itupalẹ ona abayo agbegbe, ati pe nikan ti o ba kuna, lẹhinna o nilo lati ṣafikun iru awọn asọye ti yoo ṣe apejuwe igbesi aye - ati pe iru ero yii jẹ eka pupọ ju oluyẹwo awin, tabi nitootọ eyikeyi oluyẹwo iranti ti o wa tẹlẹ. Yiyan laarin “ohun gbogbo dara” ati “Emi ko loye ohunkohun” - rara, ohunkan gbọdọ dara julọ. 
Nitorina, bi ẹnikan ti o ti kọ ọpọlọpọ koodu ni C, Mo ro pe nini atilẹyin fun iṣakoso igbesi aye laifọwọyi jẹ ohun pataki julọ. Mo tun jẹ pẹlu iye Java ti nlo iranti ati ẹdun akọkọ ni GC. Nigbati o ba pin iranti ni Java, iwọ kii yoo gba iranti pada ti o jẹ agbegbe ni ọmọ GC ti o kẹhin. Eyi kii ṣe ọran ni awọn ede pẹlu iṣakoso iranti kongẹ diẹ sii. Ti o ba pe malloc, o gba iranti lẹsẹkẹsẹ ti o kan lo. Nigbagbogbo o ṣe awọn nkan igba diẹ pẹlu iranti ati pada lẹsẹkẹsẹ pada. Ati awọn ti o lẹsẹkẹsẹ pada si awọn malloc pool, ati awọn nigbamii ti malloc ọmọ fa o jade lẹẹkansi. Nitorinaa, lilo iranti gangan dinku si ṣeto awọn nkan laaye ni akoko ti a fun, pẹlu awọn n jo. Ati pe ti ohun gbogbo ko ba jo ni ọna aiṣedeede patapata, pupọ julọ iranti dopin ni awọn caches ati ero isise, ati pe o ṣiṣẹ ni iyara. Ṣugbọn nilo ọpọlọpọ iṣakoso iranti afọwọṣe pẹlu malloc ati ọfẹ ti a pe ni aṣẹ to tọ, ni aye to tọ. Ipata le mu eyi daradara lori tirẹ, ati ni ọpọlọpọ awọn ọran paapaa fun iṣẹ ṣiṣe ti o dara julọ, nitori lilo iranti ti dinku si iṣiro lọwọlọwọ nikan - ni idakeji si iduro fun ọmọ GC atẹle lati laaye iranti. Bi abajade, a ni ọna ti o nifẹ pupọ lati mu ilọsiwaju ṣiṣẹ. Ati pe o lagbara pupọ - Mo tumọ si, Mo ṣe iru awọn nkan nigba ṣiṣe data fun fintech, ati pe eyi gba mi laaye lati ni iyara to bii igba marun. Iyẹn jẹ igbelaruge nla ti o lẹwa, ni pataki ni agbaye nibiti awọn ilana ti ko yarayara ati pe a tun n duro de awọn ilọsiwaju.

Performance Engineer Career

Andrei: Emi yoo tun fẹ lati beere ni ayika nipa awọn iṣẹ-ṣiṣe ni apapọ. O dide si olokiki pẹlu iṣẹ JIT rẹ ni HotSpot ati lẹhinna gbe lọ si Azul, eyiti o tun jẹ ile-iṣẹ JVM kan. Ṣugbọn a ti n ṣiṣẹ tẹlẹ diẹ sii lori ohun elo ju sọfitiwia lọ. Ati lẹhinna wọn lojiji yipada si Big Data ati Ẹkọ Ẹrọ, ati lẹhinna si wiwa ẹtan. Bawo ni eyi ṣe ṣẹlẹ? Iwọnyi jẹ awọn agbegbe ti o yatọ pupọ ti idagbasoke.

Òkè: Mo ti ṣe siseto fun igba pipẹ ati pe Mo ti ṣakoso lati gba ọpọlọpọ awọn kilasi oriṣiriṣi. Ati nigbati awọn eniyan ba sọ pe: "Oh, iwọ ni ẹniti o ṣe JIT fun Java!", O jẹ ẹrin nigbagbogbo. Ṣugbọn ṣaaju iyẹn, Mo n ṣiṣẹ lori oniye kan ti PostScript - ede ti Apple lo lẹẹkan fun awọn atẹwe laser rẹ. Ati ṣaaju pe Mo ṣe imuse ti ede Jade. Mo ro pe koko ti o wọpọ fun mi ni idagbasoke ọpa. Ni gbogbo igbesi aye mi Mo ti n ṣe awọn irinṣẹ pẹlu eyiti awọn eniyan miiran kọ awọn eto itunu wọn. Ṣugbọn Mo tun ṣe alabapin ninu idagbasoke awọn ọna ṣiṣe, awọn awakọ, awọn olutọpa ipele kernel, awọn ede fun idagbasoke OS, eyiti o bẹrẹ lainidi, ṣugbọn lẹhin akoko di eka ati siwaju sii. Ṣugbọn koko akọkọ tun jẹ idagbasoke awọn irinṣẹ. A ńlá ara ti aye mi koja laarin Azul ati Sun, ati awọn ti o wà nipa Java. Ṣugbọn nigbati mo wọle si Data Nla ati Ẹkọ Ẹrọ, Mo fi ijanilaya ifẹ mi pada ki o sọ pe, “Oh, ni bayi a ni iṣoro ti kii ṣe bintin, ati pe ọpọlọpọ awọn nkan ti o nifẹ si wa ti n ṣẹlẹ ati awọn eniyan n ṣe awọn nkan.” Eyi jẹ ọna idagbasoke nla lati mu.

Bẹẹni, Mo nifẹ gaan iširo pinpin. Iṣẹ akọkọ mi jẹ ọmọ ile-iwe ni C, lori iṣẹ akanṣe ipolowo kan. Eyi ni pinpin iṣiro lori awọn eerun Zilog Z80 ti o gba data fun OCR afọwọṣe, ti a ṣe nipasẹ olutupalẹ afọwọṣe gidi kan. O je kan itura ati ki o patapata irikuri koko. Ṣugbọn awọn iṣoro wa, apakan kan ko ni idanimọ daradara, nitorinaa o ni lati ya aworan kan ki o ṣafihan si eniyan ti o le ka pẹlu oju wọn tẹlẹ ki o jabo ohun ti o sọ, ati nitorinaa awọn iṣẹ wa pẹlu data, ati awọn iṣẹ wọnyi. ní èdè tiwọn. Nibẹ je kan backend ti o ni ilọsiwaju gbogbo eyi - Z80s nṣiṣẹ ni ni afiwe pẹlu vt100 TTY nṣiṣẹ - ọkan fun eniyan, ati nibẹ ni a ni afiwe siseto awoṣe lori Z80. Diẹ ninu awọn wọpọ nkan ti iranti pín nipa gbogbo Z80s laarin star iṣeto ni; Awọn backplane ti a tun pín, ati idaji ninu awọn Ramu ti a pin laarin awọn nẹtiwọki, ati awọn miiran idaji wà ikọkọ tabi lọ si nkan miran. A nilari eka ni afiwe eto pin pin... ologbele-pin iranti. Nigbawo ni eyi ... Emi ko le ranti paapaa, ibikan ni aarin-80s. Oyimbo igba pipẹ seyin. 
Bẹẹni, jẹ ki a ro pe ọdun 30 jẹ igba pipẹ sẹhin. Awọn iṣoro ti o ni ibatan si iširo pinpin ti wa fun igba pipẹ; awọn eniyan ti pẹ ni ogun pẹlu Beowulf-awọn iṣupọ. Iru awọn iṣupọ bii… Fun apẹẹrẹ: Ethernet wa ati iyara x86 rẹ ti sopọ si Ethernet yii, ati ni bayi o fẹ gba iranti pinpin iro, nitori ko si ẹnikan ti o le ṣe ifaminsi iširo pinpin lẹhinna, o nira pupọ ati nitorinaa nibẹ. jẹ iro pinpin iranti pẹlu awọn oju-iwe iranti aabo lori x86, ati pe ti o ba kọwe si oju-iwe yii, lẹhinna a sọ fun awọn ilana miiran pe ti wọn ba wọle si iranti pinpin kanna, yoo nilo lati kojọpọ lati ọdọ rẹ, ati nitorinaa nkan bi ilana fun atilẹyin Iṣọkan cache han ati sọfitiwia fun eyi. Awon Erongba. Iṣoro gidi, dajudaju, jẹ nkan miiran. Gbogbo eyi ṣiṣẹ, ṣugbọn o yara ni awọn iṣoro iṣẹ, nitori ko si ẹnikan ti o loye awọn awoṣe iṣẹ ni ipele to dara - kini awọn ilana iwọle iranti wa nibẹ, bii o ṣe le rii daju pe awọn apa ko ni ailopin Pingi kọọkan miiran, ati bẹbẹ lọ.

Ohun ti Mo wa pẹlu H2O ni pe awọn olupilẹṣẹ funrara wọn ni o ni iduro fun ṣiṣe ipinnu ibi ti o farapamọ ni afiwe ati nibiti kii ṣe. Mo wa pẹlu awoṣe ifaminsi ti o jẹ ki kikọ koodu iṣẹ-giga rọrun ati rọrun. Ṣugbọn kikọ koodu ti o lọra-ṣiṣẹ jẹ nira, yoo dabi buburu. O nilo lati gbiyanju ni pataki lati kọ koodu o lọra, iwọ yoo ni lati lo awọn ọna ti kii ṣe deede. Koodu braking han ni wiwo akọkọ. Bi abajade, o nigbagbogbo kọ koodu ti o nṣiṣẹ ni iyara, ṣugbọn o ni lati ṣawari kini lati ṣe ninu ọran ti iranti pinpin. Gbogbo eyi ni a so si awọn eto nla ati ihuwasi ti o wa ni iru si awọn eto nla ti kii ṣe iyipada ni afiwe Java. Mo tumọ si, fojuinu pe awọn okun meji kọwe si ọna ti o jọra, ọkan ninu wọn bori, ati ekeji, ni ibamu, padanu, ati pe iwọ ko mọ eyi ti o jẹ. Ti wọn ko ba jẹ iyipada, lẹhinna aṣẹ le jẹ ohunkohun ti o fẹ - ati pe eyi ṣiṣẹ daradara. Awọn eniyan bikita gaan nipa aṣẹ awọn iṣẹ, wọn fi iyipada si awọn aaye to tọ, ati pe wọn nireti awọn iṣoro iṣẹ ṣiṣe ti o ni ibatan si iranti ni awọn aaye to tọ. Bibẹẹkọ, wọn yoo kan kọ koodu ni irisi awọn losiwajulosehin lati 1 si N, nibiti N jẹ diẹ ninu awọn aimọye, ni ireti pe gbogbo awọn ọran eka yoo di afiwera laifọwọyi - ati pe ko ṣiṣẹ nibẹ. Ṣugbọn ni H2O eyi kii ṣe Java tabi Scala; o le ro pe “Java iyokuro” ti o ba fẹ. Eyi jẹ ara siseto ti o han gbangba ati pe o jọra si kikọ C ti o rọrun tabi koodu Java pẹlu awọn losiwajulosehin ati awọn akojọpọ. Ṣugbọn ni akoko kanna, iranti le ni ilọsiwaju ni terabytes. Mo tun lo H2O. Mo lo lati igba de igba ni awọn iṣẹ akanṣe - ati pe o tun jẹ ohun ti o yara ju, awọn dosinni ti awọn akoko yiyara ju awọn oludije rẹ lọ. Ti o ba n ṣe Big Data pẹlu data columnar, o ṣoro pupọ lati lu H2O.

Imọ italaya

Andrei: Kini o jẹ ipenija nla julọ ni gbogbo iṣẹ rẹ?

Òkè: Njẹ a n jiroro lori imọ-ẹrọ tabi ti kii ṣe imọ-ẹrọ ti ọran naa? Emi yoo sọ pe awọn italaya nla julọ kii ṣe awọn imọ-ẹrọ. 
Bi fun imọ italaya. Mo nìkan ṣẹgun wọn. Emi ko paapaa mọ kini ọkan ti o tobi julọ jẹ, ṣugbọn awọn ti o lẹwa diẹ wa ti o gba akoko diẹ, Ijakadi ọpọlọ. Nigbati mo lọ si Sun, Mo ni idaniloju pe Emi yoo ṣe akopọ yara kan, ati pe opo kan ti awọn agbalagba sọ ni esi pe Emi kii yoo ṣe aṣeyọri. Sugbon mo tẹle yi ona, kowe a alakojo si isalẹ lati awọn Forukọsilẹ allocator, ati awọn ti o wà oyimbo sare. O yara bi C1 ode oni, ṣugbọn olupilẹṣẹ jẹ o lọra pupọ lẹhinna, ati ni ẹhin o jẹ iṣoro igbekalẹ data nla kan. Mo nilo rẹ lati kọ ipin iforukọsilẹ ayaworan ati pe Emi ko loye atayanyan laarin ikosile koodu ati iyara, eyiti o wa ni akoko yẹn ati pe o ṣe pataki pupọ. O wa ni pe eto data nigbagbogbo kọja iwọn kaṣe lori x86s ti akoko yẹn, ati nitorinaa, ti MO ba ro lakoko pe olupilẹṣẹ iforukọsilẹ yoo ṣiṣẹ jade 5-10 ida ọgọrun ti akoko jitter lapapọ, lẹhinna ni otitọ o wa lati jẹ 50 ogorun.

Bi akoko ti n lọ, olupilẹṣẹ naa di mimọ ati daradara siwaju sii, dawọ ṣiṣẹda koodu ẹru ni awọn ọran diẹ sii, ati pe iṣẹ ṣiṣe bẹrẹ sii dabi ohun ti olupilẹṣẹ C ṣe. . Ti o ba kọ koodu bi C, iwọ yoo gba iṣẹ bii C ni awọn ọran diẹ sii. Ati siwaju sii ti o lọ, diẹ sii nigbagbogbo o ni koodu ti o ni ibamu pẹlu ipele C, oluṣakoso iforukọsilẹ bẹrẹ si dabi nkan ti o pari… laibikita boya koodu rẹ n ṣiṣẹ ni iyara tabi o lọra. Mo ti tesiwaju lati sise lori allocator lati ṣe awọn ti o ṣe dara aṣayan. O si di losokepupo ati losokepupo, ṣugbọn o fun dara ati ki o dara išẹ ni igba ibi ti ko si ọkan miran le bawa. Mo ti le besomi sinu a Forukọsilẹ allocator, sin osu kan ti ise nibẹ, ki o si lojiji gbogbo koodu yoo bẹrẹ ṣiṣe 5% yiyara. Eyi ṣẹlẹ ni akoko lẹhin akoko ati oluṣowo iforukọsilẹ di nkan ti iṣẹ aworan - gbogbo eniyan fẹran rẹ tabi korira rẹ, ati pe awọn eniyan lati ile-ẹkọ giga beere awọn ibeere lori koko-ọrọ “kilode ti ohun gbogbo ṣe ni ọna yii”, kilode ti kii ṣe ila ọlọjẹ, ati kini iyatọ. Idahun si tun jẹ kanna: olupilẹṣẹ ti o da lori kikun aworan pẹlu iṣẹ iṣọra pupọ pẹlu koodu ifipamọ jẹ dogba si ohun ija ti iṣẹgun, apapọ ti o dara julọ ti ko si ẹnikan ti o le ṣẹgun. Ati pe eyi jẹ ohun ti kii ṣe kedere. Ohun gbogbo miiran ti olupilẹṣẹ ṣe awọn nkan ti o ṣe iwadii daradara wa, botilẹjẹpe wọn tun ti mu wa si ipele ti aworan. Mo nigbagbogbo ṣe awọn nkan ti o yẹ ki o yi olupilẹṣẹ pada si iṣẹ-ọnà. Ṣugbọn kò si ti yi je ohunkohun extraordinary - ayafi fun awọn Forukọsilẹ allocator. Awọn ẹtan ni lati ṣọra ge mọlẹ labẹ fifuye ati, ti eyi ba ṣẹlẹ (Mo le ṣe alaye ni alaye diẹ sii ti o ba nifẹ), eyi tumọ si pe o le ṣe inline diẹ sii ni ibinu, laisi ewu ti o ṣubu lori kink ni iṣeto iṣẹ. Ní àwọn ọjọ́ yẹn, ọ̀pọ̀lọpọ̀ àkójọ ẹ̀kúnrẹ́rẹ́ ló wà, tí wọ́n so mọ́ra pẹ̀lú àwọn ọ̀rọ̀ tí wọ́n fi ń pè é, tí wọ́n sì ní àwọn ẹ̀rọ ìkọ̀wé, àmọ́ kò sẹ́ni tó lè ṣe é.

Iṣoro naa ni pe ti o ba ṣafikun awọn ọna ti o wa labẹ inlining, jijẹ ati jijẹ agbegbe inlining, ṣeto awọn iye ti a lo lesekese ju nọmba awọn iforukọsilẹ lọ, ati pe o ni lati ge wọn. Awọn lominu ni ipele maa n wa nigbati awọn allocator yoo fun soke, ati ọkan ti o dara tani fun a idasonu jẹ tọ miran, o yoo ta diẹ ninu awọn gbogbo egan ohun. Iye ti inlining nibi ni pe o padanu apakan ti oke, oke fun pipe ati fifipamọ, o le wo awọn iye inu ati pe o le mu wọn siwaju sii. Iye idiyele inlining ni pe nọmba nla ti awọn iye laaye ni a ṣẹda, ati pe ti olupilẹṣẹ iforukọsilẹ rẹ ba jona diẹ sii ju iwulo lọ, o padanu lẹsẹkẹsẹ. Nitorinaa, ọpọlọpọ awọn olutọpa ni iṣoro kan: nigbati inlining ba kọja laini kan, ohun gbogbo ni agbaye bẹrẹ lati ge lulẹ ati pe iṣelọpọ le ṣan silẹ ni igbonse. Awọn ti o ṣe imuse olupilẹṣẹ ṣafikun diẹ ninu awọn heuristics: fun apẹẹrẹ, lati da inlining duro, bẹrẹ pẹlu iwọn ti o tobi to, nitori awọn ipin yoo ba ohun gbogbo jẹ. Eyi ni bii kink kan ninu ayaworan iṣẹ ti ṣe agbekalẹ - iwọ inline, inline, iṣẹ ṣiṣe laiyara dagba - ati lẹhinna ariwo! – o ṣubu lulẹ bi jack ti o yara nitori pe o laini pupọ. Eyi ni bii ohun gbogbo ṣe ṣiṣẹ ṣaaju dide ti Java. Java nilo inlining pupọ diẹ sii, nitorinaa Mo ni lati jẹ ki olupilẹṣẹ mi ni ibinu pupọ ki o le jade ju awọn ipadanu lọ, ati pe ti o ba laini pupọ, o bẹrẹ si idasonu, ṣugbọn lẹhinna “ko si spilling” akoko tun wa. Eyi jẹ akiyesi ti o nifẹ si ati pe o kan wa si mi lati besi, ko han gbangba, ṣugbọn o sanwo daradara. Mo gba inlining ibinu ati pe o mu mi lọ si awọn aaye nibiti Java ati iṣẹ ṣiṣe C ṣiṣẹ ni ẹgbẹ kan. Wọn sunmọ gaan - Mo le kọ koodu Java ti o yara yiyara ju koodu C ati awọn nkan bii iyẹn, ṣugbọn ni apapọ, ni aworan nla ti awọn nkan, wọn jẹ afiwera ni aijọju. Mo ro pe apakan ti iteriba yii ni oluṣowo iforukọsilẹ, eyiti o fun mi laaye lati laini bi aṣiwere bi o ti ṣee. Mo kan inline ohun gbogbo ti mo ri. Ibeere nibi ni boya olupilẹṣẹ ṣiṣẹ daradara, boya abajade jẹ koodu ṣiṣẹ ni oye. Eyi jẹ ipenija nla: lati ni oye gbogbo eyi ati jẹ ki o ṣiṣẹ.

Diẹ diẹ nipa iforukọsilẹ ipin ati ọpọlọpọ awọn ohun kohun

Владимир: Awọn iṣoro bii ipin iforukọsilẹ dabi ẹnipe iru ayeraye, koko-ọrọ ailopin. Mo Iyanu ti o ba ti wa nibẹ ti lailai ti ohun agutan ti o dabi enipe ni ileri ati ki o si kuna ninu iwa?

Òkè: Dajudaju! Iforukọsilẹ ipin jẹ agbegbe ti o gbiyanju lati wa diẹ ninu awọn heuristics lati yanju iṣoro NP-pipe. Ati pe o ko le ṣaṣeyọri ojutu pipe, otun? Eleyi jẹ nìkan soro. Wo, Niwaju ti akopo Time - o tun ṣiṣẹ ibi. Ibaraẹnisọrọ nibi jẹ nipa diẹ ninu awọn ọran apapọ. Nipa iṣẹ aṣoju, nitorinaa o le lọ ṣe iwọn nkan ti o ro pe o jẹ iṣẹ aṣoju ti o dara - lẹhinna, o n ṣiṣẹ lati mu dara si! Iforukọsilẹ ipin jẹ koko-ọrọ gbogbo nipa iṣẹ ṣiṣe. Ni kete ti o ba ni apẹrẹ akọkọ, o ṣiṣẹ ati kun ohun ti o nilo, iṣẹ ṣiṣe bẹrẹ. O nilo lati kọ ẹkọ lati ṣe iwọn daradara. Kini idi ti o ṣe pataki? Ti o ba ni data ti o han gbangba, o le wo awọn agbegbe oriṣiriṣi ati wo: Bẹẹni, o ṣe iranlọwọ nibi, ṣugbọn iyẹn ni ibi ti ohun gbogbo fọ! Diẹ ninu awọn imọran ti o dara wa, o ṣafikun awọn heuristics tuntun ati lojiji ohun gbogbo bẹrẹ ṣiṣẹ diẹ dara julọ ni apapọ. Tabi ko bẹrẹ. Mo ni ọpọlọpọ awọn ọran nibiti a ti n jà fun iṣẹ ṣiṣe ida marun marun ti o ṣe iyatọ idagbasoke wa lati alapin iṣaaju. Ati ni gbogbo igba ti o wulẹ bi yi: ibi ti o AamiEye , ibi ti o padanu. Ti o ba ni awọn irinṣẹ itupalẹ iṣẹ ṣiṣe to dara, o le wa awọn imọran ti o padanu ati loye idi ti wọn fi kuna. Boya o tọ lati fi ohun gbogbo silẹ bi o ti jẹ, tabi boya mu ọna ti o ṣe pataki diẹ sii si atunṣe-itanran, tabi jade lọ ati ṣatunṣe nkan miiran. O ni kan gbogbo opo ti ohun! Mo ṣe gige itutu yii, ṣugbọn Mo tun nilo ọkan yii, ati eyi, ati ọkan yii - ati apapọ apapọ wọn yoo fun awọn ilọsiwaju diẹ. Ati awọn loners le kuna. Eyi ni iru iṣẹ ṣiṣe lori awọn iṣoro pipe NP.

Владимир: Ẹnikan gba rilara pe awọn nkan bii kikun ni awọn ipin jẹ iṣoro ti o ti yanju tẹlẹ. O dara, o ti pinnu fun ọ, ni idajọ nipasẹ ohun ti o n sọ, nitorinaa o tọsi paapaa lẹhinna…

Òkè: Ko ṣe ipinnu bi iru bẹẹ. Iwọ ni o gbọdọ yi pada si “yanju”. Awọn iṣoro ti o nira ati pe wọn nilo lati yanju. Ni kete ti eyi ba ti ṣe, o to akoko lati ṣiṣẹ lori iṣelọpọ. O nilo lati sunmọ iṣẹ yii ni ibamu - ṣe awọn aṣepari, gba awọn metiriki, ṣalaye awọn ipo nigbati, nigbati o yiyi pada si ẹya ti tẹlẹ, gige atijọ rẹ bẹrẹ ṣiṣẹ lẹẹkansi (tabi idakeji, duro). Ki o si ma fun soke titi ti o se aseyori nkankan. Gẹgẹbi Mo ti sọ tẹlẹ, ti awọn imọran itura ba wa ti ko ṣiṣẹ, ṣugbọn ni aaye ipin ti awọn iforukọsilẹ ti awọn imọran o fẹrẹ to ailopin. O le, fun apẹẹrẹ, ka awọn atẹjade ijinle sayensi. Botilẹjẹpe ni bayi agbegbe yii ti bẹrẹ lati lọ diẹ sii laiyara ati pe o ti han diẹ sii ju ti ọdọ rẹ lọ. Sibẹsibẹ, awọn eniyan ainiye ti n ṣiṣẹ ni aaye yii ati pe gbogbo awọn imọran wọn tọsi igbiyanju, gbogbo wọn n duro de awọn iyẹ. Ati pe o ko le sọ bi wọn ṣe dara to ayafi ti o ba gbiyanju wọn. Bawo ni daradara ti wọn ṣepọ pẹlu ohun gbogbo ti o wa ninu olutọpa rẹ, nitori olutọpa kan ṣe ọpọlọpọ awọn ohun, ati diẹ ninu awọn ero kii yoo ṣiṣẹ ninu olutọpa pato rẹ, ṣugbọn ninu olutọpa miiran wọn yoo ni irọrun. Ọna akọkọ lati ṣẹgun fun olupilẹṣẹ ni lati fa nkan ti o lọra ni ita ọna akọkọ ati fi ipa mu u lati pin pẹlu awọn aala ti awọn ọna ti o lọra. Nitorinaa ti o ba fẹ ṣiṣe GC kan, mu ọna ti o lọra, ṣe imukuro, jabọ imukuro, gbogbo nkan yẹn - o mọ pe awọn nkan wọnyi jẹ toje. Ati pe wọn ṣọwọn gaan, Mo ṣayẹwo. O ṣe afikun iṣẹ ati pe o yọkuro ọpọlọpọ awọn ihamọ lori awọn ipa ọna lọra, ṣugbọn kii ṣe pataki nitori wọn lọra ati ki o ṣọwọn rin irin-ajo. Fun apẹẹrẹ, itọka asan - ko ṣẹlẹ rara, otun? O nilo lati ni awọn ọna pupọ fun awọn ohun oriṣiriṣi, ṣugbọn wọn ko yẹ ki o dabaru pẹlu akọkọ. 

Владимир: Kini o ro nipa olona-mojuto, nigba ti o wa ni o wa egbegberun ti ohun kohun ni ẹẹkan? Ṣe eyi jẹ nkan ti o wulo?

Òkè: Aṣeyọri ti GPU fihan pe o wulo pupọ!

Владимир: Wọn ti wa ni oyimbo specialized. Kini nipa awọn ero isise idi gbogbogbo?

Òkè: daradara, ti o wà Azul ká owo awoṣe. Idahun naa pada wa ni akoko kan nigbati eniyan fẹran iṣẹ ṣiṣe asọtẹlẹ gaan. O nira lati kọ koodu ti o jọra lẹhinna. Awoṣe ifaminsi H2O jẹ iwọn pupọ, ṣugbọn kii ṣe awoṣe idi gbogbogbo. Boya diẹ diẹ sii gbogbogbo ju nigba lilo GPU kan. Njẹ a n sọrọ nipa idiju ti idagbasoke iru nkan bẹẹ tabi idiju ti lilo rẹ? Fun apẹẹrẹ, Azul kọ mi ni ẹkọ ti o nifẹ, dipo ti kii ṣe kedere: awọn caches kekere jẹ deede. 

Ipenija ti o tobi julọ ni igbesi aye

Владимир: Kini nipa awọn italaya ti kii ṣe imọ-ẹrọ?

Òkè: Ipenija ti o tobi julọ kii ṣe lati jẹ oninuure ati wuyi si eniyan. Ati bi abajade, Mo nigbagbogbo rii ara mi ni awọn ipo rogbodiyan pupọ. Awọn ti mo ti mọ pe awọn nkan n lọ ni aṣiṣe, ṣugbọn wọn ko mọ bi a ṣe le lọ siwaju pẹlu awọn iṣoro wọnyẹn ati pe wọn ko le mu wọn. Ọpọlọpọ awọn iṣoro igba pipẹ, ti o pẹ fun awọn ọdun mẹwa, dide ni ọna yii. Otitọ pe Java ni awọn olupilẹṣẹ C1 ati C2 jẹ abajade taara ti eyi. Otitọ pe ko si akopọ ipele-pupọ ni Java fun ọdun mẹwa ni ọna kan tun jẹ abajade taara. O han gbangba pe a nilo iru eto kan, ṣugbọn kii ṣe kedere idi ti ko si tẹlẹ. Mo ni awọn iṣoro pẹlu ẹlẹrọ kan… tabi ẹgbẹ awọn onimọ-ẹrọ kan. Ni ẹẹkan, nigbati mo bẹrẹ si ṣiṣẹ ni Sun, Mo wa ... O dara, kii ṣe lẹhinna nikan, Mo nigbagbogbo ni ero ti ara mi lori ohun gbogbo. Ati pe Mo ro pe o jẹ otitọ pe o le kan gba otitọ tirẹ yii ki o sọ siwaju si. Paapa niwon mo ti wà shockingly ọtun julọ ti awọn akoko. Ati pe ti o ko ba fẹran ọna yii ... paapaa ti o ba han gbangba pe o jẹ aṣiṣe ati ṣiṣe ọrọ isọkusọ ... Ni gbogbogbo, awọn eniyan diẹ le farada iru ibaraẹnisọrọ yii. Botilẹjẹpe diẹ ninu le, bii mi. Mo ti kọ gbogbo igbesi aye mi lori awọn ilana iteriba. Ti o ba fi nkan ti ko tọ han mi, Emi yoo yipada lẹsẹkẹsẹ ki o sọ pe: o sọ ọrọ isọkusọ. Ni akoko kanna, dajudaju, Mo gafara ati gbogbo eyi, Emi yoo ṣe akiyesi awọn iteriba, ti o ba jẹ eyikeyi, ati ṣe awọn iṣe miiran ti o tọ. Lori awọn miiran ọwọ, Mo wa shockingly ọtun nipa a shockingly tobi ogorun ti lapapọ akoko. Ati pe ko ṣiṣẹ daradara ni awọn ibatan pẹlu eniyan. Emi ko gbiyanju lati dara, ṣugbọn Mo n beere ibeere naa ni airotẹlẹ. "Eyi kii yoo ṣiṣẹ, nitori ọkan, meji ati mẹta." Ati pe wọn dabi, “Oh!” Awọn abajade miiran wa ti o dara julọ lati foju: fun apẹẹrẹ, awọn ti o yori si ikọsilẹ lati ọdọ iyawo mi ati ọdun mẹwa ti ibanujẹ lẹhin iyẹn.

Ipenija jẹ Ijakadi pẹlu eniyan, pẹlu iwoye wọn ti ohun ti o le tabi ko le ṣe, kini o ṣe pataki ati ohun ti kii ṣe. Ọpọlọpọ awọn italaya wa nipa aṣa ifaminsi. Mo tun kọ koodu pupọ, ati ni awọn ọjọ yẹn Mo paapaa ni lati fa fifalẹ nitori pe Mo n ṣe ọpọlọpọ awọn iṣẹ-ṣiṣe ti o jọra ati ṣiṣe wọn ti ko dara, dipo idojukọ ọkan. Ni wiwo pada, Mo kọ idaji koodu fun aṣẹ Java JIT, aṣẹ C2. Olupilẹṣẹ ti o yara ju nigbamii ti kowe idaji bi o lọra, idaji ti o tẹle bi o lọra, ati pe o jẹ idinku iwọn. Eniyan keje ni ọna yii jẹ pupọ, o lọra pupọ - iyẹn nigbagbogbo n ṣẹlẹ! Mo fi ọwọ kan ọpọlọpọ koodu. Mo wo ẹniti o kọ kini, laisi imukuro, Mo tẹjumọ koodu wọn, ṣe atunyẹwo ọkọọkan wọn, ati tun tẹsiwaju lati kọ ara mi diẹ sii ju eyikeyi ninu wọn lọ. Ọna yii ko ṣiṣẹ daradara pẹlu eniyan. Diẹ ninu awọn eniyan ko fẹran eyi. Ati nigbati wọn ko ba le mu, gbogbo iru awọn ẹdun bẹrẹ. Fun apẹẹrẹ, nigba kan sọ fun mi pe ki n da ifaminsi duro nitori pe mo n kọ koodu pupọ pupọ ati pe o n ṣe ewu ẹgbẹ naa, gbogbo rẹ si dabi awada fun mi: Arakunrin, ti ẹgbẹ iyokù ba parẹ ati pe MO tẹsiwaju kikọ koodu, iwọ yoo padanu awọn ẹgbẹ idaji nikan. Ni apa keji, ti MO ba tọju koodu kikọ ati pe o padanu idaji ẹgbẹ naa, iyẹn dabi iṣakoso buburu pupọ. Emi ko ronu nipa rẹ rara, ko sọrọ nipa rẹ rara, ṣugbọn o tun wa ni ibikan ni ori mi. Ọ̀rọ̀ náà ń yí padà lọ́kàn mi pé: “Ṣé gbogbo ẹ ń ṣe mí bí?” Nitorinaa, iṣoro nla julọ ni emi ati awọn ibatan mi pẹlu eniyan. Bayi Mo loye ara mi dara julọ, Mo jẹ oludari ẹgbẹ fun awọn olupilẹṣẹ fun igba pipẹ, ati ni bayi Mo sọ fun eniyan taara: o mọ, Emi ni ẹni ti Emi, ati pe iwọ yoo ni lati koju mi ​​- ṣe o dara ti MO ba duro Nibi? Ati nigbati wọn bẹrẹ lati koju rẹ, ohun gbogbo ṣiṣẹ. Ni otitọ, Emi kii ṣe buburu tabi dara, Emi ko ni awọn ero buburu eyikeyi tabi awọn ireti amotaraeninikan, o jẹ koko-ọrọ mi nikan, ati pe Mo nilo lati gbe pẹlu rẹ bakan.

Andrei: Laipẹ gbogbo eniyan bẹrẹ si sọrọ nipa imọ-ara-ẹni fun awọn introverts, ati awọn ọgbọn rirọ ni apapọ. Kini o le sọ nipa eyi?

Òkè: Bẹẹni, oye ati ẹkọ ti mo kọ lati ikọsilẹ pẹlu iyawo mi niyẹn. Ohun ti Mo kọ lati ikọsilẹ ni oye ara mi. Eyi ni bi mo ṣe bẹrẹ si ni oye awọn eniyan miiran. Loye bi ibaraenisepo yii ṣe n ṣiṣẹ. Eleyi yori si awari ọkan lẹhin ti miiran. Imọye ti ẹni ti Emi jẹ ati ohun ti Mo ṣe aṣoju. Kini MO n ṣe: boya iṣẹ-ṣiṣe naa ti da mi loju, tabi Mo n yago fun ija, tabi nkan miiran - ati pe ipele imọ-ara yii ṣe iranlọwọ gaan lati tọju ara mi ni iṣakoso. Lẹhin ti yi ohun gbogbo lọ Elo rọrun. Ohun kan ti Mo ṣe awari kii ṣe ninu ara mi nikan, ṣugbọn tun ninu awọn olupilẹṣẹ miiran ni ailagbara lati sọ awọn ero inu ọrọ nigbati o ba wa ni ipo aapọn ẹdun. Fun apẹẹrẹ, o joko nibẹ ifaminsi, ni ipo ṣiṣan, ati lẹhinna wọn wa si ọdọ rẹ ki wọn bẹrẹ si pariwo ni hysterics pe ohunkan ti bajẹ ati ni bayi awọn igbese to gaju yoo ṣe si ọ. Ati pe o ko le sọ ọrọ kan nitori pe o wa ni ipo ti aapọn ẹdun. Imọ ti o gba gba ọ laaye lati mura silẹ fun akoko yii, yọ ninu ewu rẹ ki o tẹsiwaju si ero ipadasẹhin, lẹhin eyi o le ṣe nkan kan. Nitorinaa bẹẹni, nigbati o bẹrẹ lati mọ bi gbogbo rẹ ṣe n ṣiṣẹ, o jẹ iṣẹlẹ iyipada-aye nla kan. 
Emi funrarami ko le rii awọn ọrọ to tọ, ṣugbọn Mo ranti lẹsẹsẹ awọn iṣe. Oro naa ni pe iṣesi yii jẹ ti ara bi o ti jẹ ọrọ, ati pe o nilo aaye. Iru aaye bẹẹ, ni ori Zen. Eyi ni deede ohun ti o nilo lati ṣe alaye, ati lẹhinna gbera si apakan lẹsẹkẹsẹ - igbesẹ ti ara ni mimọ. Nigbati mo ba dakẹ lọrọ ẹnu, Mo le ṣe ilana ipo naa ni ẹdun. Bi adrenaline ti de ọpọlọ rẹ, yi ọ pada si ija tabi ipo ọkọ ofurufu, o ko le sọ ohunkohun mọ, rara - ni bayi o jẹ aṣiwere, ẹlẹrọ okùn, ko lagbara ti esi to dara tabi paapaa da ikọlu naa duro, ati pe ikọlu naa jẹ ọfẹ. lati kolu lẹẹkansi ati lẹẹkansi. O gbọdọ kọkọ di ara rẹ lẹẹkansi, tun gba iṣakoso, jade kuro ni ipo “ija tabi ọkọ ofurufu”.

Ati fun eyi a nilo aaye ọrọ. O kan aaye ọfẹ. Ti o ba sọ ohunkohun rara, lẹhinna o le sọ ni pato, lẹhinna lọ ki o wa “aaye” fun ara rẹ gaan: lọ fun rin ni ọgba-itura, tii ara rẹ si iwẹ - ko ṣe pataki. Ohun akọkọ ni lati ge asopọ fun igba diẹ lati ipo yẹn. Ni kete ti o ba yipada ni pipa fun o kere ju iṣẹju-aaya diẹ, iṣakoso pada, o bẹrẹ lati ronu ni iṣọra. "O dara, Emi kii ṣe iru aṣiwere kan, Emi ko ṣe awọn ohun aṣiwere, Mo jẹ eniyan ti o wulo pupọ.” Ni kete ti o ba ti ni anfani lati parowa fun ararẹ, o to akoko lati lọ si ipele atẹle: ni oye ohun ti o ṣẹlẹ. O ti kolu, ikọlu naa wa lati ibiti o ko nireti, o jẹ aiṣotitọ, ibùba buburu. Eyi buru. Igbesẹ ti o tẹle ni lati ni oye idi ti ikọlu nilo eyi. Na nugbo tọn, etẹwutu? Boya nitori on tikararẹ binu? Kilode ti o fi ya were? Fun apẹẹrẹ, nitori pe o ti yi ara rẹ lẹnu ati pe ko le gba ojuse? Eyi ni ọna lati farabalẹ mu gbogbo ipo naa. Ṣugbọn eyi nilo aaye fun ọgbọn, aaye ọrọ. Igbesẹ akọkọ gan-an ni lati ya kuro ni ifọrọranṣẹ. Yago fun ijiroro pẹlu awọn ọrọ. Fagilee rẹ, rin kuro ni yarayara bi o ti ṣee. Ti o ba jẹ ibaraẹnisọrọ tẹlifoonu, kan gbe silẹ - eyi jẹ ọgbọn ti Mo kọ lati ibaraẹnisọrọ pẹlu iyawo mi atijọ. Ti ibaraẹnisọrọ naa ko ba lọ nibikibi ti o dara, kan sọ "o dabọ" ki o si gbele. Lati apa keji foonu naa: “blah blah blah”, o dahun: “Bẹẹni, bye!” ki o si idorikodo soke. O kan pari ibaraẹnisọrọ naa. Iṣẹju marun lẹhinna, nigbati agbara lati ronu ni oye pada si ọ, o ti tutu diẹ, o ṣee ṣe lati ronu nipa ohun gbogbo, kini o ṣẹlẹ ati kini yoo ṣẹlẹ atẹle. Ki o si bẹrẹ igbekalẹ kan laniiyan esi, kuku ju o kan fesi jade ti imolara. Fun mi, aṣeyọri ninu imọ-ara ẹni jẹ otitọ ni otitọ pe ni ọran ti wahala ẹdun Emi ko le sọrọ. Nlọ kuro ni ipo yii, ironu ati gbero bi o ṣe le dahun ati isanpada fun awọn iṣoro - iwọnyi ni awọn igbesẹ ti o tọ ninu ọran naa nigbati o ko ba le sọrọ. Ọna to rọọrun ni lati salọ kuro ni ipo ti aapọn ẹdun ṣe afihan ararẹ ati nirọrun dawọ kopa ninu aapọn yii. Lehin eyi o di anfani lati ronu, nigbati o ba le ronu, o le sọrọ, ati bẹbẹ lọ.

Nipa ọna, ni ile-ẹjọ, agbẹjọro alatako gbiyanju lati ṣe eyi si ọ - bayi o ti han idi. Nitoripe o ni agbara lati dinku ọ si iru ipo ti iwọ ko le paapaa pe orukọ rẹ, fun apẹẹrẹ. Ni ọna gidi, iwọ kii yoo ni anfani lati sọrọ. Ti eyi ba ṣẹlẹ si ọ, ati pe ti o ba mọ pe iwọ yoo rii ara rẹ ni ibi ti awọn ija-ọrọ ti nja, ni aaye bi ile-ẹjọ, lẹhinna o le wa pẹlu agbejoro rẹ. Agbẹjọro yoo duro fun ọ ati da ikọlu ọrọ naa duro, yoo ṣe ni ọna ofin patapata, ati aaye Zen ti o sọnu yoo pada si ọdọ rẹ. Fun apẹẹrẹ, Mo ni lati pe idile mi ni igba meji, onidajọ jẹ ọrẹ pupọ nipa eyi, ṣugbọn agbẹjọro alatako pariwo o si pariwo si mi, Emi ko le gba ọrọ kan ni eti eti. Ni awọn iṣẹlẹ wọnyi, lilo olulaja kan ṣiṣẹ dara julọ fun mi. Olulaja duro gbogbo titẹ yii ti o n ṣan silẹ lori ọ ni ṣiṣan ti nlọ lọwọ, o rii aaye Zen ti o yẹ, ati pẹlu agbara lati sọrọ awọn ipadabọ. Eyi jẹ gbogbo aaye ti imọ ninu eyiti o wa pupọ lati kawe, pupọ lati ṣawari laarin ararẹ, ati pe gbogbo eyi yipada si awọn ipinnu ilana-giga ti o yatọ fun awọn eniyan oriṣiriṣi. Diẹ ninu awọn eniyan ko ni awọn iṣoro ti a ṣalaye loke; nigbagbogbo, awọn eniyan ti o jẹ ọjọgbọn awọn eniyan tita ko ni wọn. Gbogbo awọn eniyan wọnyi ti wọn fi ọrọ ṣe igbesi aye wọn - olokiki awọn akọrin, awọn akewi, awọn olori ẹsin ati awọn oloselu, wọn nigbagbogbo ni nkan lati sọ. Wọn ko ni iru awọn iṣoro bẹ, ṣugbọn Mo ṣe.

Andrei: O je... airotẹlẹ. O dara, a ti sọrọ pupọ tẹlẹ ati pe o to akoko lati pari ifọrọwanilẹnuwo yii. A yoo dajudaju pade ni apejọ ati pe yoo ni anfani lati tẹsiwaju ọrọ sisọ yii. Wo e ni Hydra!

O le tẹsiwaju ibaraẹnisọrọ rẹ pẹlu Cliff ni apejọ Hydra 2019, eyiti yoo waye ni Oṣu Keje 11-12, 2019 ni St. Oun yoo wa pẹlu ijabọ kan "Iriri Iranti Iṣowo Iṣowo Azul Hardware". Tiketi le ṣee ra lori aaye osise.

orisun: www.habr.com

Fi ọrọìwòye kun