Ingxoxo enhle noCliff Click, ubaba wokuhlanganiswa kwe-JIT eJava

Ingxoxo enhle noCliff Click, ubaba wokuhlanganiswa kwe-JIT eJavaCliff Chofoza - I-CTO ye-Cratus (izinzwa ze-IoT zokuthuthukiswa kwenqubo), umsunguli kanye nomsunguli weziqalo ezimbalwa (okuhlanganisa i-Rocket Realtime School, i-Neurensic ne-H2O.ai) enezindawo ezimbalwa zokuphuma eziyimpumelelo. UCliff wabhala umdidiyeli wakhe wokuqala eneminyaka eyi-15 (uPascal we-TRS Z-80)! Waziwa kakhulu ngomsebenzi wakhe ku-C2 e-Java (The Sea of ​​Nodes IR). Lo mhlanganisi ubonise umhlaba ukuthi i-JIT ingakhiqiza ikhodi yekhwalithi ephezulu, okwakungenye yezinto ezibangela ukuvela kwe-Java njengenye yezingxenyekazi zesofthiwe eziyinhloko zesimanje. U-Cliff wabe esesiza i-Azul Systems ukuthi yakhe i-mainframe engu-864-core nge-software ye-Java ehlanzekile esekela i-GC ima isikhashana enqwabeni ye-500-gigabyte phakathi kwama-millisecond angu-10. Ngokuvamile, uCliff ukwazile ukusebenza kuzo zonke izici ze-JVM.

 
Le habrapost iyingxoxo enhle noCliff. Sizokhuluma ngezihloko ezilandelayo:

  • Ukushintshela ekulungiselelweni kwezinga eliphansi
  • Indlela yokwenza i-refactoring enkulu
  • Imodeli yezindleko
  • Ukuqeqeshwa kokwenza ngcono kwezinga eliphansi
  • Izibonelo ezisebenzayo zokuthuthukiswa kokusebenza
  • Kungani udale olwakho ulimi lokuhlela
  • Umsebenzi Wonjiniyela Wokusebenza
  • Izinselele zobuchwepheshe
  • Okuncane mayelana nokwabiwa kwerejista kanye nama-multi-cores
  • Inselele enkulu empilweni

Izingxoxo zenziwa ngu:

  • U-Andrey Sathane kusuka ku-Amazon Web Services. Emsebenzini wakhe, wakwazi ukusebenza kumaphrojekthi ahluke ngokuphelele: wahlola i-NewSQL esakaziwe egciniwe e-Yandex, uhlelo lokubona ifu eKaspersky Lab, umdlalo wabadlali abaningi ku-Mail.ru kanye nensizakalo yokubala amanani okushintshaniswa kwamanye amazwe eDeutsche Bank. Unentshisekelo yokuhlola ama-backend amakhulu namasistimu asabalalisiwe.
  • UVladimir Sitnikov kusuka ku-Netcracker. Iminyaka eyishumi yomsebenzi ekusebenzeni nasekulinganiseni kwe-NetCracker OS, isofthiwe esetshenziswa opharetha bezingcingo ukwenza ngokuzenzakalelayo inethiwekhi nezinqubo zokuphatha imishini yenethiwekhi. Unentshisekelo ezindabeni zokusebenza kwe-Java ne-Oracle Database. Umbhali wentuthuko yokusebenza engaphezu kweshumi nambili kumshayeli osemthethweni we-PostgreSQL JDBC.

Ukushintshela ekulungiselelweni kwezinga eliphansi

Andrei: Uyigama elikhulu emhlabeni wokuhlanganiswa kwe-JIT, i-Java, nomsebenzi wokusebenza ngokujwayelekile, akunjalo? 

Cliff: Kunjalo nje!

Andrei: Ake siqale ngemibuzo ejwayelekile mayelana nomsebenzi wokusebenza. Ucabangani mayelana nokukhetha phakathi kokuthuthukiswa kwezinga eliphezulu nezinga eliphansi njengokusebenza kuleveli ye-CPU?

Cliff: Yebo, yonke into ilula lapha. Ikhodi eshesha kakhulu yileyo engalokothi isebenze. Ngakho-ke, udinga njalo ukuqala kusuka ezingeni eliphezulu, usebenze kuma-algorithms. I-O notation engcono izodlula u-O notation okubi kakhulu, ngaphandle uma kungenelela ama-constants amakhulu ngokwanele. Izinto ezisezingeni eliphansi zihlala ekugcineni. Ngokuvamile, uma uthuthukise sonke isitaki sakho ngokwanele futhi kusenezinto ezithandekayo ezisele, lelo izinga eliphansi. Kodwa ungaqala kanjani kusuka ezingeni eliphezulu? Wazi kanjani ukuthi sekwenziwe umsebenzi osezingeni eliphezulu ngokwanele? Hhayi-ke. Awekho amaresiphi asevele enziwe. Udinga ukuqonda inkinga, unqume ukuthi uzokwenzani (ukuze ungathathi izinyathelo ezingadingekile esikhathini esizayo) bese uvula iphrofayili, engasho okuthile okuwusizo. Kwesinye isikhathi, nawe uyabona ukuthi usulahle izinto ezingadingekile futhi sekuyisikhathi sokwenza ukulungisa okusezingeni eliphansi. Lolu uhlobo olukhethekile lobuciko. Baningi abantu abenza izinto ezingenasidingo, kodwa behamba ngokushesha kangangokuthi abanaso isikhathi sokukhathazeka ngokukhiqiza. Kodwa lokhu kuze kube yilapho umbuzo uphakama ngokungaqondile. Imvamisa u-99% wesikhathi akekho onendaba nokuthi ngenzani, kuze kube yisikhathi lapho into ebalulekile iza endleleni ebucayi okungekho muntu onendaba ngayo. Futhi lapha wonke umuntu uqala ukukuhlupha ngokuthi "kungani kungazange kusebenze kahle kusukela ekuqaleni." Ngokuvamile, kuhlale kukhona okuthuthukisa ekusebenzeni. Kodwa u-99% wesikhathi awunawo umkhondo! Uzama nje ukwenza okuthile kusebenze futhi phakathi nenqubo uthola ukuthi yini ebalulekile. Ngeke wazi kusengaphambili ukuthi lesi siqeshana sidinga ukuphelela, ngakho-ke, empeleni, kufanele uphelele kukho konke. Kodwa lokhu akunakwenzeka futhi awukwenzi. Kuhlale kunezinto eziningi okufanele zilungiswe - futhi lokho kujwayelekile ngokuphelele.

Indlela yokwenza i-refactoring enkulu

Andrei: Usebenza kanjani ekusebenzeni? Lena inkinga ehlanganisayo. Isibonelo, ingabe uke wabhekana nezinkinga ezivela ezimpambanweni zomgwaqo eziningi zokusebenza ezikhona?

Cliff: Ngizama ukukugwema. Uma ngazi ukuthi ukusebenza kuzoba yinkinga, ngiyacabanga ngakho ngaphambi kokuthi ngiqale ukubhala amakhodi, ikakhulukazi ngezakhiwo zedatha. Kodwa ngokuvamile uthola konke lokhu kamuva kakhulu. Futhi-ke kufanele uye ezilinganisweni ezidlulele futhi wenze lokho engikubiza ngokuthi "bhala kabusha futhi unqobe": udinga ukubamba ucezu olukhulu ngokwanele. Enye ikhodi kusazodingeka ibhalwe kabusha ngenxa yezinkinga zokusebenza noma enye into. Noma ngabe yisiphi isizathu sokubhala kabusha ikhodi, cishe ngaso sonke isikhathi kungcono ukubhala kabusha ucezu olukhulu kunocezu oluncane. Ngalesi sikhathi, wonke umuntu uqala ukuthuthumela ngokwesaba: "O Nkulunkulu wami, awukwazi ukuthinta ikhodi engaka!" Kodwa eqinisweni, le ndlela cishe njalo isebenza kangcono kakhulu. Udinga ukuthatha ngokushesha inkinga enkulu, udwebe umbuthano omkhulu owuzungezile bese uthi: Ngizobhala kabusha yonke into engaphakathi kwendingilizi. Umngcele mncane kakhulu kunokuqukethwe okungaphakathi kwawo okudingeka kushintshwe. Futhi uma ukucaciswa kwemingcele okunjalo kukuvumela ukuthi wenze umsebenzi ngaphakathi ngokuphelele, izandla zakho zikhululekile, yenza okufunayo. Uma usuyiqonda inkinga, inqubo yokubhala kabusha ilula kakhulu, ngakho-ke thatha kancane!
Ngesikhathi esifanayo, uma ubhala kabusha futhi ubona ukuthi ukusebenza kuzoba yinkinga, ungaqala ukukhathazeka ngakho. Lokhu kuvame ukuphenduka kube izinto ezilula njengokuthi "ungakopishi idatha, phatha idatha kalula ngangokunokwenzeka, yenze ibe mncane." Ekubhaleni kabusha okukhulu, kunezindlela ezijwayelekile zokuthuthukisa ukusebenza. Futhi cishe njalo zizungeza idatha.

Imodeli yezindleko

Andrei: Kwenye yamaphodikasti ukhulume ngamamodeli ezindleko kumongo wokukhiqiza. Ungakwazi yini ukuchaza ukuthi ubuqonde ukuthini ngalokhu?

Cliff: Impela. Ngazalelwa enkathini lapho ukusebenza kweprosesa kwakubaluleke kakhulu. Futhi lesi sikhathi siyabuya futhi - isiphetho asinaso indida. Ngaqala ukuphila ezinsukwini zemishini engamabhithi ayisishiyagalombili; ikhompuyutha yami yokuqala yayisebenza ngamabhayithi angu-256. Amabhayithi impela. Konke kwakukuncane kakhulu. Imiyalo bekufanele ibalwe, futhi njengoba siqala ukukhuphula isitaki solimi lokuhlela, izilimi zaqhubeka kakhulu. Kwakukhona i-Assembler, kwase kuba yi-Basic, kwalandela u-C, no-C banakekela imininingwane eminingi, njengokwabiwa kwerejista nokukhethwa kweziyalezo. Kodwa yonke into yayicacile lapho, futhi uma ngenza i-pointer esimweni sokuguquguquka, ngangizothola umthwalo, futhi izindleko zalo myalelo ziyaziwa. I-hardware ikhiqiza inombolo ethile yemijikelezo yomshini, ngakho-ke isivinini sokwenza izinto ezahlukene singabalwa ngokuhlanganisa yonke imiyalelo ozoyisebenzisa. Ukuqhathanisa ngakunye/ukuhlola/igatsha/call/load/isitolo kungangezwa futhi kuthiwe: leso yisikhathi sakho sokwenza. Lapho usebenza ekuthuthukiseni ukusebenza, ngokuqinisekile uzonaka ukuthi yiziphi izinombolo ezihambisana nemijikelezo emincane eshisayo. 
Kodwa ngokushesha nje lapho ushintshela ku-Java, i-Python nezinye izinto ezifanayo, usuka ngokushesha ku-hardware yezinga eliphansi. Ziyini izindleko zokushayela i-getter e-Java? Uma i-JIT ku-Hotspot ilungile kufakwe emgqeni, izolayisha, kodwa uma ingakwenzanga lokhu, kuzoba ucingo lomsebenzi. Njengoba ikholi iku-hot loop, izokhipha konke okunye ukulungiselelwa kuleyo loop. Ngakho-ke, izindleko zangempela zizoba phezulu kakhulu. Futhi ulahlekelwa ngokushesha ikhono lokubuka ucezu lwekhodi futhi uqonde ukuthi kufanele sikwenze ngokuya ngesivinini sewashi lokucubungula, inkumbulo kanye nenqolobane esetshenzisiwe. Konke lokhu kuba mnandi kuphela uma ungena ngempela ekusebenzeni.
Manje sizithola sisesimweni lapho isivinini sokusebenza singakaze senyuke iminyaka eyishumi. Izinsuku zakudala zibuyile! Ngeke usakwazi ukuthembela ekusebenzeni okuhle kochungechunge olulodwa. Kodwa uma ngokungazelelwe ungena ku-computing efanayo, kunzima ngendlela emangalisayo, wonke umuntu ubheka wena njengoJames Bond. Ukusheshisa okuphindwe kashumi lapha kuvame ukwenzeka ezindaweni lapho othile onakele khona okuthile. Concurrency idinga umsebenzi omningi. Ukuze uthole lokho kusheshisa okungu-XNUMXx, udinga ukuqonda imodeli yezindleko. Libiza malini futhi lingakanani? Futhi ukwenza lokhu, udinga ukuqonda ukuthi ulimi luhambisana kanjani ne-hardware engaphansi.
UMartin Thompson ukhethe igama elihle lebhulogi yakhe Ukuzwela Kwemishini! Udinga ukuqonda ukuthi i-hardware izokwenzani, ukuthi izokwenza kanjani, nokuthi kungani yenza lokho ekwenzayo kwasekuqaleni. Ukusebenzisa lokhu, kulula kakhulu ukuqala ukubala imiyalelo nokuthola ukuthi isikhathi sokwenza siyaphi. Uma ungenakho ukuqeqeshwa okufanele, uvele ufuna ikati elimnyama ekamelweni elimnyama. Ngibona abantu benza kahle ngaso sonke isikhathi abangazi ukuthi benzani. Bahlupheka kakhulu futhi abathuthuki kangako. Futhi uma ngithatha ucezu olufanayo lwekhodi, ngena phakathi kwama-hacks amancane futhi ngithole ukusheshisa okuphindwe kahlanu noma okuyishumi, kufana nokuthi: kulungile, lokho akulungile, bese besazi ukuthi ungcono. Amazing. Ngikhuluma ngani... imodeli yezindleko imayelana nokuthi hlobo luni lwekhodi oyibhalayo nokuthi lugijima ngokushesha kangakanani ngokwesilinganiso esithombeni esikhulu.

Andrei: Futhi ungayigcina kanjani ivolumu ekhanda lakho? Ingabe lokhu kufinyelelwa ngokuhlangenwe nakho okwengeziwe, noma? Kuvelaphi okuhlangenwe nakho okunjalo?

Cliff: Hhayi-ke, angizange ngithole ulwazi lwami ngendlela elula. Ngahlela ku-Assembly emuva ezinsukwini lapho ungase uqonde yonke imiyalelo eyodwa. Kuzwakala kuwubuwula, kepha kusukela lapho isethi yemiyalo ye-Z80 ibilokhu ihlala ekhanda lami, enkumbulweni yami. Angikhumbuli amagama abantu kungakapheli umzuzu wokukhuluma, kodwa ngikhumbula ikhodi eyabhalwa eminyakeni engama-40 edlule. Kuyahlekisa, kubukeka njenge-syndrome "usosayensi oyisiphukuphuku".

Ukuqeqeshwa kokwenza ngcono kwezinga eliphansi

Andrei: Ingabe ikhona indlela elula yokungena?

Cliff: Yebo futhi cha. Ihadiwe esiyisebenzisayo sonke ayikashintshi kangako ngokuhamba kwesikhathi. Wonke umuntu usebenzisa i-x86, ngaphandle kwama-smartphones e-Arm. Uma ungenzi uhlobo oluthile lokushumeka kwe-hardcore, wenza into efanayo. Kulungile, ngokulandelayo. Iziqondiso nazo azishintshile amakhulu eminyaka. Udinga ukuyobhala okuthile ku-Assembly. Hhayi okuningi, kodwa kwanele ukuqala ukuqonda. Uyamamatheka, kodwa ngikhuluma ngokujulile. Udinga ukuqonda ukuxhumana phakathi kolimi nehadiwe. Ngemva kwalokho udinga ukuhamba ubhale kancane futhi wenze ithoyizi compiler kancane ulimi ithoyizi. Okufana nethoyizi kusho ukuthi idinga ukwenziwa ngesikhathi esifanele. Kungaba lula kakhulu, kodwa kufanele kukhiqize imiyalelo. Isenzo sokukhiqiza umyalelo sizokusiza uqonde imodeli yezindleko zebhuloho phakathi kwekhodi yezinga eliphezulu ebhalwa yiwo wonke umuntu kanye nekhodi yomshini esebenza ku-hardware. Le ncwadi izoshiswa ebuchosheni ngesikhathi kubhalwa umdidiyeli. Ngisho nomhlanganisi olula. Ngemuva kwalokho, ungaqala ukubuka i-Java kanye neqiniso lokuthi i-chasm yayo ye-semantic ijule kakhulu, futhi kunzima kakhulu ukwakha amabhuloho phezu kwayo. E-Java, kunzima kakhulu ukuqonda ukuthi ibhuloho lethu libe lihle noma libi, yini ezolibangela ukuba lihlukane nokuthi yini engeke lihlukane. Kodwa udinga uhlobo oluthile lwendawo yokuqala lapho ubheka khona ikhodi futhi uqonde: "yebo, le getter kufanele ifakwe emgqeni njalo." Futhi-ke kuvela ukuthi ngezinye izikhathi lokhu kwenzeka, ngaphandle kwesimo lapho indlela iba nkulu kakhulu, futhi i-JIT iqala ukufaka yonke into. Ukusebenza kwezindawo ezinjalo kungabikezelwa ngaso leso sikhathi. Ngokuvamile ama-getter asebenza kahle, kodwa-ke ubheka izihibe ezinkulu ezishisayo bese ubona ukuthi kukhona izingcingo ezithile ezintantayo ezingazi ukuthi zenzani. Lena inkinga yokusetshenziswa kakhulu kwama-getter, isizathu esenza ukuthi afakwe emgqeni wukuthi akucaci ukuthi ayi-getter. Uma unesisekelo sekhodi encane kakhulu, ungavele uyikhumbule bese uthi: lena i-getter, futhi lena i-setter. Esisekelweni esikhulu sekhodi, umsebenzi ngamunye uphila umlando wawo, okuyinto, ngokuvamile, akwaziwa muntu. Iphrofayili ithi silahlekelwe u-24% wesikhathi ku-loop ethile futhi ukuze siqonde ukuthi le loop yenzani, sidinga ukubheka umsebenzi ngamunye ngaphakathi. Akunakwenzeka ukuqonda lokhu ngaphandle kokutadisha umsebenzi, futhi lokhu kunciphisa kakhulu inqubo yokuqonda. Yingakho ngingawasebenzisi ama-getter nama-setter, ngifinyelele izinga elisha!
Ungayitholaphi imodeli yezindleko? Nokho, ungafunda okuthile, kunjalo... Kodwa ngicabanga ukuthi indlela engcono kakhulu ukwenza. Ukwenza i-compiler encane kuzoba yindlela engcono kakhulu yokuqonda imodeli yezindleko futhi uyifake ekhanda lakho. I-compiler encane engafaneleka ukuhlela i-microwave iwumsebenzi oqalayo. Hhayi-ke, ngiqonde ukuthi, uma usunawo amakhono okuhlela, lokho kufanele kwanele. Zonke lezi zinto ezinjengokuhlukanisa iyunithi yezinhlamvu onayo njengohlobo oluthile lwesisho se-algebraic, ukukhipha imiyalelo yokusebenza kwezibalo ukusuka lapho ngokulandelana okufanele, ukuthatha amanani afanele kumarejista - konke lokhu kwenziwa ngesikhathi esisodwa. Futhi ngenkathi ukwenza, kuzogxilwa ebuchosheni bakho. Ngicabanga ukuthi wonke umuntu uyazi ukuthi umdidiyeli wenzani. Futhi lokhu kuzonikeza ukuqonda kwemodeli yezindleko.

Izibonelo ezisebenzayo zokuthuthukiswa kokusebenza

Andrei: Yini enye okufanele uyinake lapho usebenza ekukhiqizeni?

Cliff: Izakhiwo zedatha. Ngendlela, yebo, angizange ngifundise la makilasi isikhathi eside ... Isikole seRocket. Kwakumnandi, kodwa kwakudinga umzamo omkhulu, futhi nginakho ukuphila! KULUNGILE. Ngakho-ke, kwelinye lamakilasi amakhulu futhi athakazelisayo, "Ukusebenza kwakho kuya kuphi," nginikeze abafundi isibonelo: amagigabhayithi amabili nesigamu wedatha ye-fintech afundwe efayeleni le-CSV futhi kwadingeka abale inani lemikhiqizo ethengisiwe. . Idatha yemakethe yamathikithi avamile. Amaphakethe e-UDP aguqulelwe kufomethi yombhalo kusukela ngeminyaka yama-70s. I-Chicago Mercantile Exchange - zonke izinhlobo zezinto ezifana nebhotela, ummbila, ubhontshisi wesoya, izinto ezinjalo. Kwakudingeka ukubala le mikhiqizo, inani lokuthengiselana, umthamo ophakathi wokunyakaza kwezimali nezimpahla, njll. Izibalo zokuhweba ezilula kakhulu: thola ikhodi yomkhiqizo (okuyizinhlamvu ezi-1-2 kuthebula le-hashi), thola inani, ulingeze kwelinye lamasethi ohwebo, engeza ivolumu, engeza inani, nezinye izinto ezimbalwa. Izibalo ezilula kakhulu. Ukuqaliswa kwethoyizi kwakuqondile kakhulu: konke kufayela, ngafunda ifayela futhi ngidlule kulo, ngihlukanisa amarekhodi ngamanye abe yizintambo ze-Java, ngifuna izinto ezidingekayo kuzo futhi ngingeze ngokwezibalo ezichazwe ngenhla. Futhi isebenza ngesivinini esithile esiphansi.

Ngale ndlela, kusobala ukuthi kwenzekani, kanye ne-parallel computing ngeke kusize, akunjalo? Kuvele ukuthi ukukhuphuka okuphindwe kahlanu ekusebenzeni kungafinyelelwa ngokukhetha izakhiwo zedatha ezifanele. Futhi lokhu kumangaza ngisho nabahleli bezinhlelo abanolwazi! Esimweni sami esithile, iqhinga laliwukuthi akufanele wenze ukwabiwa kwememori ku-loop eshisayo. Hhayi-ke, akulona iqiniso lonke leli, kodwa ngokujwayelekile - akufanele ugqamise "kanye ku-X" lapho u-X emkhulu ngokwanele. Uma u-X engamagigabhayithi amabili nohhafu, akufanele unikeze noma yini β€œkanye ngohlamvu ngalunye”, noma β€œkanye emugqeni”, noma β€œkanye ngenkambu ngayinye”, noma yini enjalo. Yilapho isikhathi esichithwa khona. Ngabe kusebenza kanjani lokhu? Cabanga ngishaya ucingo String.split() noma BufferedReader.readLine(). Readline yenza iyunithi yezinhlamvu kusukela kusethi yamabhayithi eze phezu kwenethiwekhi, kanye ngomugqa ngamunye, kumugqa ngamunye wezinkulungwane zezigidi zemigqa. Ngithatha lomugqa, ngiwuhlahlele bese ngiwulahla. Kungani ngiyilahla - kahle, sengivele ngiyicubungulile, yilokho kuphela. Ngakho-ke, ngebhayithi ngayinye efundwayo kusuka kulawa ma-2.7G, izinhlamvu ezimbili zizobhalwa emgqeni, okungukuthi, kakade 5.4G, futhi angizidingi nganoma yini enye, ngakho zilahlwa. Uma ubheka umkhawulokudonsa wememori, silayisha i-2.7G ehamba ngememori nebhasi yememori ku-processor, bese iphinda kabili ithunyelwa kulayini olele enkumbulweni, futhi konke lokhu kuyahlakazeka lapho umugqa omusha ngamunye udalwa. Kodwa ngidinga ukuyifunda, i-hardware iyayifunda, noma ngabe yonke into ihlakazekile kamuva. Futhi kufanele ngibhale phansi ngoba ngidale umugqa futhi izinqolobane zigcwele - inqolobane ayikwazi ukwamukela i-2.7G. Ngakho-ke, kuwo wonke amabhayithi engiwafundile, ngifunda amabhayithi amabili ngaphezulu futhi ngibhala amanye amabhayithi amabili, futhi ekugcineni anesilinganiso esingu-4: 1 - kulesi silinganiso sichitha umkhawulokudonsa wememori. Futhi-ke kuvela ukuthi uma ngikwenza String.split() - lesi akusona isikhathi sokugcina ngenza lokhu, kungase kube nezinye izinkambu ezingu-6-7 ngaphakathi. Ngakho-ke ikhodi yakudala yokufunda i-CSV bese uhlukanisa iyunithi yezinhlamvu iphumela ekumoshweni komkhawulokudonsa wememori cishe ongu-14:1 uma uhlobene nalokho ongathanda ukuba nakho. Uma ulahla lezi zinketho, ungathola ukusheshisa okuphindwe kahlanu.

Futhi akunzima kangako. Uma ubheka ikhodi nge-engeli efanele, konke kuba lula uma usuqaphela inkinga. Akufanele uyeke ukwaba inkumbulo ngokuphelele: inkinga kuphela ukuthi unikezela okuthile futhi ngokushesha kufa, futhi endleleni ishisa insiza ebalulekile, kulokhu inkumbulo yomkhawulokudonsa. Futhi konke lokhu kubangela ukwehla kokukhiqiza. Ku-x86 ngokuvamile udinga ukushisa imijikelezo yokucubungula, kodwa lapha ushise yonke inkumbulo ngaphambi kwesikhathi. Isixazululo siwukunciphisa inani lokukhishwa. 
Enye ingxenye yenkinga ukuthi uma usebenzisa iphrofayili lapho umugqa wememori uphela, khona lapho kwenzeka, uvame ukulinda ukuthi i-cache ibuye ngoba igcwele udoti osanda kuwukhiqiza, yonke leyo migqa. Ngakho-ke, yonke imisebenzi yokulayisha noma yesitolo iba kancane, ngoba iholela ekuphuthelweni kwe-cache - yonke inqolobane ihambe kancane, ilinde udoti ukuyishiya. Ngakho-ke, iphrofayili izovele ibonise umsindo ofudumele ongahleliwe ogcotshwe kuyo yonke loop - ngeke kube khona umyalo oshisayo ohlukile noma indawo kukhodi. Umsindo kuphela. Futhi uma ubheka imijikelezo ye-GC, yonke iyisizukulwane Esincane futhi ishesha kakhulu - ama-microseconds noma ama-millisecond esiphezulu. Phela yonke lenkumbulo ifa khona manjalo. Ukhipha izigidigidi zamagigabhayithi, futhi uyawasika, futhi awasike, futhi awasike futhi. Konke lokhu kwenzeka ngokushesha okukhulu. Kuvele ukuthi kunemijikelezo ye-GC eshibhile, umsindo ofudumele kuwo wonke umjikelezo, kodwa sifuna ukuthola ukusheshisa okungu-5x. Ngalesi sikhathi, kufanele kuvalwe okuthile ekhanda lakho futhi kuzwakale: "kungani lokhu?!" Ukuchichima kwe-memory strip akuboniswa kusilungisi sephutha sakudala; udinga ukusebenzisa isilungisi sekhawunta sezingxenyekazi zekhompuyutha bese uzibonele ngokwakho futhi ngokuqondile. Kodwa lokhu akukwazi ukusolwa ngokuqondile kulezi zimpawu ezintathu. Uphawu lwesithathu uma ubheka lokho okugqamisayo, buza umdidiyeli, bese ephendula: β€œWenze imigqa eyisigidigidi, kodwa i-GC isebenze mahhala.” Ngokushesha nje lapho lokhu kwenzeka, uyaqaphela ukuthi udale izinto eziningi kakhulu futhi washisa wonke umzila wememori. Kukhona indlela yokuthola lokhu, kodwa akubonakali. 

Inkinga isesakhiweni sedatha: isakhiwo esingenalutho esingaphansi kwakho konke okwenzekayo, sikhulu kakhulu, yi-2.7G kudiski, ngakho ukwenza ikhophi yale nto akuthandeki kakhulu - ufuna ukuyilayisha kusuka ku-network byte buffer ngokushesha. kumarejista, ukuze ungafundi-ubhale emgqeni uye phambili naphambili izikhathi ezinhlanu. Ngeshwa, i-Java ayikuniki umtapo wolwazi njengengxenye ye-JDK ngokuzenzakalelayo. Kodwa lokhu kuyinto encane, akunjalo? Empeleni, lena imigqa yekhodi engu-5-10 ezosetshenziselwa ukusebenzisa isilayishi sakho sentambo esibhafa, esiphinda ukuziphatha kwesigaba sezintambo, kuyilapho siyisisonga esizungeze ibhayithi yebhayithi engaphansi. Ngenxa yalokho, kuvele ukuthi usebenza cishe njengokungathi unezintambo, kodwa empeleni izikhombi zebhafa ziyahamba lapho, futhi amabhayithi aluhlaza awakopishwa noma kuphi, futhi ngaleyo ndlela amabhafa afanayo aphinde asetshenziswe kaninginingi, futhi isistimu yokusebenza iyakujabulela ukuzithathela wena izinto eziklanyelwe zona, njengokufihla okuphindwe kabili kwebhafa yalezi zibhafa zebhayithi, futhi awusagayi ngokusakaza okungapheli kwedatha engadingekile. Ngendlela, ingabe uyaqonda ukuthi uma usebenza ne-GC, kuqinisekiswa ukuthi isabelo ngasinye sememori ngeke sibonakale kumprosesa ngemva komjikelezo wokugcina we-GC? Ngakho-ke, konke lokhu akukwazi ukuba kunqolobane, bese kwenzeka ukuphuthelwa okuqinisekisiwe okungu-100%. Lapho usebenza nge-pointer, ku-x86, ukususa irejista enkumbulweni kuthatha imijikelezo yewashi engu-1-2, futhi ngokushesha nje lapho lokhu kwenzeka, uyakhokha, ukhokhe, ukhokhe, ngoba inkumbulo ivuliwe. Izinqolobane eziyisishiyagalolunye - futhi lezi yizindleko zokwabiwa kwememori. Inani langempela.

Ngamanye amazwi, izakhiwo zedatha ziyinto enzima kakhulu ukuyishintsha. Futhi uma usuqaphela ukuthi ukhethe ukwakheka kwedatha okungalungile okuzobulala ukusebenza kamuva, ngokuvamile kunomsebenzi omningi okufanele wenziwe, kodwa uma ungakwenzi, izinto zizoba zimbi nakakhulu. Okokuqala, udinga ukucabanga ngezakhiwo zedatha, lokhu kubalulekile. Izindleko eziyinhloko lapha ziwela ezinhlakeni zedatha enamafutha, eziqala ukusetshenziswa ngesitayela sokuthi "Ngikopishe isakhiwo sedatha X ngesakhiwo sedatha engu-Y ngoba ngithanda umumo ka-Y kangcono." Kodwa ukusebenza kokukopisha (okubonakala kushibhile) empeleni kumosha umkhawulokudonsa wenkumbulo futhi yilapho sonke isikhathi sokubulala esichithiwe singcwatshwa khona. Uma ngineyunithi yezinhlamvu enkulu ye-JSON futhi ngifuna ukuyiguqula ibe isihlahla se-DOM esihlelekile sama-POJO noma okuthile, ukusebenza kokuhlukanisa leyo ntambo nokwakha i-POJO, bese ngifinyelela i-POJO futhi ngokuhamba kwesikhathi, kuzoholela ezindlekweni ezingadingekile - hhayi ezishibhile. Ngaphandle uma ugijima eduze kwama-POJO kaningi kunokugijima uzungeza iyunithi yezinhlamvu. Ngaphandle kwalokho, esikhundleni salokho ungazama ukususa ukubhala ngekhodi bese ukhipha kuphela lokho okudingayo lapho, ngaphandle kokuyiguqula ibe yinoma iyiphi i-POJO. Uma konke lokhu kwenzeka endleleni lapho kudingeka khona ukusebenza okuphezulu kakhulu, awekho ama-POJO akho, udinga ukuthi ngandlela thize umbe umugqa ngqo.

Kungani udale olwakho ulimi lokuhlela

Andrei: Uthe ukuze uqonde imodeli yezindleko, udinga ukubhala ulimi lwakho oluncane...

Cliff: Akulona ulimi, kodwa umdidiyeli. Ulimi kanye nomdidiyeli yizinto ezimbili ezihlukene. Umehluko obaluleke kakhulu usekhanda lakho. 

Andrei: Nokho, ngokwazi kwami, uzama ukudala izilimi zakho. Kwani?

Cliff: Ngoba ngiyakwazi! Sengithathe umhlalaphansi, ngakho-ke lena into engizilibazisa ngayo. Bengisebenzisa izilimi zabanye abantu impilo yami yonke. Ngiphinde ngasebenza kakhulu ngesitayela sami sokubhala amakhodi. Futhi futhi ngoba ngibona izinkinga kwezinye izilimi. Ngiyabona ukuthi kunezindlela ezingcono zokwenza izinto ezijwayelekile. Futhi ngangizowasebenzisa. Ngikhathele nje ukubona izinkinga kimina, ku-Java, ku-Python, nganoma yiluphi olunye ulimi. Manje ngibhala ku-React Native, JavaScript kanye ne-Elm njengendlela yokuzilibazisa engeyona eyokuthatha umhlalaphansi, kodwa mayelana nomsebenzi osebenzayo. Ngiphinde ngibhale ngePython futhi, cishe, ngizoqhubeka nokusebenza ekufundeni komshini kuma-backends e-Java. Kunezilimi eziningi ezidumile futhi zonke zinezici ezithakazelisayo. Wonke umuntu muhle ngendlela yakhe futhi ungazama ukuhlanganisa zonke lezi zici. Ngakho-ke, ngifunda izinto ezingithakaselayo, ukuziphatha kolimi, ngizama ukuqhamuka ne-semantics ephusile. Futhi kuze kube manje ngiyaphumelela! Okwamanje nginenkinga ye-memory semantics, ngoba ngifuna ukuba nayo njengaku-C ne-Java, futhi ngithole imodeli eqinile yememori kanye ne-memory semantics yemithwalo nezitolo. Ngasikhathi sinye, yiba nencazelo yohlobo oluzenzakalelayo njengaku-Haskell. Lapha, ngizama ukuhlanganisa inkomba yohlobo lwe-Haskell nomsebenzi wenkumbulo kukho kokubili i-C ne-Java. Yilokhu ebengikwenza ezinyangeni ezi-2-3 ezedlule, ngokwesibonelo.

Andrei: Uma wakha ulimi oluthatha izici ezingcono kwezinye izilimi, ucabanga ukuthi kukhona ozokwenza okuphambene: thatha imibono yakho futhi uyisebenzise?

Cliff: Yile ndlela kanye izilimi ezintsha ezivela ngayo! Kungani i-Java ifana ne-C? Ngenxa yokuthi u-C wayene-syntax enhle wonke umuntu ayeyiqonda futhi i-Java yakhuthazwa yile syntax, yengeza ukuphepha kohlobo, ukuhlola imingcele ye-array, i-GC, futhi baphinde bathuthukisa ezinye izinto kusuka ku-C. Bangeze ezabo. Kodwa baphefumulelwe kakhulu, akunjalo? Wonke umuntu umi emahlombe emidondoshiya efike ngaphambi kwenu - iqhubeka kanjalo-ke.

Andrei: Njengoba ngikuqonda, ulimi lwakho luzovikeleka enkumbulo. Uke wacabanga ngokusebenzisa into efana nokuhlola okubolekayo kwaRust? Uke wambheka, ucabangani ngaye?

Cliff: Hhayi-ke, bengilokhu ngibhala u-C iminyaka eminingi, ngayo yonke le malloc futhi mahhala, futhi ngilawula mathupha impilo yonke. Uyazi, i-90-95% yesikhathi sokuphila esilawulwa ngesandla sinesakhiwo esifanayo. Futhi kubuhlungu kakhulu ukukwenza mathupha. Ngingathanda ukuthi umdidiyeli akutshele nje ukuthi kwenzekani lapho nokuthi uzuzeni ngezenzo zakho. Kwezinye izinto, isheke lokuboleka likwenza lokhu ngaphandle kwebhokisi. Futhi kufanele ibonise ulwazi ngokuzenzakalelayo, iqonde yonke into, futhi ingangithwesi ngisho umthwalo ngokwethula lokhu kuqonda. Kufanele yenze okungenani ukuhlaziya kwendawo yokuphunyuka, futhi kuphela uma ihluleka, lapho-ke idinga ukwengeza izichasiselo zohlobo ezizochaza impilo yonke - futhi uhlelo olunjalo luyinkimbinkimbi kakhulu kunokuhlola okubolekayo, noma ngempela noma yisiphi isihloli senkumbulo esikhona. Ukukhetha phakathi kokuthi "konke kuhamba kahle" nokuthi "angiqondi lutho" - cha, kufanele kube khona okungcono. 
Ngakho-ke, njengomuntu obhale amakhodi amaningi ku-C, ngicabanga ukuthi ukusekelwa kokulawula ukuphila okuzenzakalelayo kuyinto ebaluleke kakhulu. Ngicikwa nokuthi iJava isebenzisa kangakanani inkumbulo futhi isikhalazo esikhulu yiGC. Uma unikeza inkumbulo ku-Java, ngeke uthole inkumbulo ebisendaweni emjikelezweni wokugcina we-GC. Lokhu akunjalo ezilimini ezinokuphathwa kwenkumbulo okunembe kakhudlwana. Uma ubiza i-malloc, uthola ngokushesha inkumbulo eyayivame ukusetshenziswa nje. Ngokuvamile wenza izinto zesikhashana ngenkumbulo futhi ngokushesha uyibuyisele emuva. Futhi ngokushesha ibuyela echibini le-malloc, futhi umjikelezo we-malloc olandelayo uyayikhipha futhi. Ngakho-ke, ukusetshenziswa kwenkumbulo kwangempela kwehliswa kusethi yezinto eziphilayo ngesikhathi esinikeziwe, kanye nokuvuza. Futhi uma yonke into ingavuzi ngendlela engcolile ngokuphelele, inkumbulo eningi igcina ifakwe kunqolobane neprosesa, futhi isebenza ngokushesha. Kepha kudinga ukuphathwa kwenkumbulo eningi nge-malloc futhi yamahhala ebizwa ngendlela efanele, endaweni efanele. Ukugqwala kungakwazi ukukusingatha kahle ngokwako, futhi ezimweni eziningi kunikeza ukusebenza okungcono kakhulu, njengoba ukusetshenziswa kwenkumbulo kuncishiswa kuze kube yizibalo zamanje - ngokuphambene nokulinda umjikelezo we-GC olandelayo ukuze ukhulule inkumbulo. Ngenxa yalokho, sithole indlela ethakazelisa kakhulu yokuthuthukisa ukusebenza. Futhi kunamandla impela - ngiqonde ukuthi, ngenze izinto ezinjalo lapho ngicubungula idatha ye-fintech, futhi lokhu kwangivumela ukuthi ngithole ukusheshisa cishe izikhathi ezinhlanu. Lokho kuthuthuka okuhle kakhulu, ikakhulukazi emhlabeni lapho amaphrosesa angasheshi futhi sisalinde ukuthuthukiswa.

Umsebenzi Wonjiniyela Wokusebenza

Andrei: Ngingathanda futhi ukubuza mayelana nemisebenzi jikelele. Uphakame wavelela ngomsebenzi wakho we-JIT e-HotSpot wabe usuthuthela e-Azul, nayo eyinkampani ye-JVM. Kodwa besivele sisebenza kakhulu ku-hardware kune-software. Babe sebeshintshela ku-Big Data kanye ne- Machine Learning, bese beya ekutholeni ukukhwabanisa. Kwenzeka kanjani lokhu? Lezi yizindawo ezihluke kakhulu zentuthuko.

Cliff: Nginezinhlelo isikhathi eside futhi ngikwazile ukuthatha amakilasi amaningi ahlukene. Futhi lapho abantu bethi: β€œoh, uwena owenze i-JIT ye-Java!”, kuhlale kuhlekisa. Kepha ngaphambi kwalokho, bengisebenza ku-clone ye-PostScript - ulimi i-Apple eyake yalusebenzisa kumaphrinta ayo e-laser. Futhi ngaphambi kwalokho ngenze ukuqaliswa kolimi lwesi-Forth. Ngicabanga ukuthi itimu evamile kimina ukuthuthukiswa kwamathuluzi. Impilo yami yonke bengilokhu ngenza amathuluzi abanye abantu ababhala ngawo izinhlelo zabo ezinhle. Kodwa futhi ngangihileleke ekuthuthukiseni izinhlelo zokusebenza, abashayeli, ama-debuggers we-kernel-level, izilimi zokuthuthukiswa kwe-OS, ezaqala zincane, kodwa ngokuhamba kwesikhathi zaba yinkimbinkimbi kakhulu. Kodwa isihloko esiyinhloko sisewukuthuthukiswa kwamathuluzi. Ingxenye enkulu yempilo yami yadlula phakathi kwe-Azul ne-Sun, futhi kwakumayelana ne-Java. Kodwa lapho ngingena ku-Big Data kanye ne- Machine Learning, ngaphinda ngasifaka isigqoko sami esihle ngathi, β€œO, manje sinenkinga engeyona encane, futhi kunezinto eziningi ezithakazelisayo ezenzekayo nabantu abenza izinto.” Lena indlela enhle yokuthuthuka okufanele uyithathe.

Yebo, ngiyithanda ngempela ikhompyutha esabalalisiwe. Umsebenzi wami wokuqala kwaba ngumfundi e-C, emsebenzini wokukhangisa. Lokhu kwasatshalaliswa ikhompuyutha kuma-chip e-Zilog Z80 aqoqa idatha ye-analog OCR, ekhiqizwe umhlaziyi we-analog wangempela. Kwakuyisihloko esipholile nesihlanya ngokuphelele. Kodwa kwaba nezinkinga, enye ingxenye yayingabonwanga kahle, ngakho-ke bekufanele ukhiphe isithombe usibonise umuntu osekwazile ukufunda ngamehlo abike lokho ekushoyo, ngakho-ke kwakukhona imisebenzi enedatha, futhi le misebenzi. babenolimi lwabo . Kube ne-backend ecubungule konke lokhu - ama-Z80 asebenza ngokuhambisana namatheminali e-vt100 asebenza - eyodwa kumuntu ngamunye, futhi bekukhona imodeli yokuhlela efanayo ku-Z80. Enye ingxenye evamile yenkumbulo eyabiwe yiwo wonke ama-Z80 ngaphakathi kokucushwa kwenkanyezi; I-backplane nayo yabelwa, futhi ingxenye ye-RAM yabelwa ngaphakathi kwenethiwekhi, futhi enye ingxenye yayiyimfihlo noma iye kwenye into. Isistimu esabalalisiwe eyinkimbinkimbi ngokunengqondo enenkumbulo eyabiwe... eyabiwe kancane. Kwakunini lokhu... angikhumbuli ngisho, endaweni ethile phakathi nawo-80s. Kudala impela. 
Yebo, ake sicabange ukuthi iminyaka engu-30 kudala kakhulu edlule. Beowulf- amaqoqo. Amaqoqo anjalo abukeka sengathi... Isibonelo: kukhona i-Ethernet futhi i-x86 yakho esheshayo ixhunywe kule Ethernet, futhi manje ufuna ukuthola inkumbulo eyabiwe mbumbulu, ngoba akekho owayengenza amakhodi ekhompiyutha asabalalisiwe ngaleso sikhathi, bekunzima kakhulu ngakho-ke kukhona. bekuyinkumbulo eyabiwe mbumbulu enamakhasi enkumbulo yokuvikela ku-x86, futhi uma ubhalele leli khasi, bese sitshela abanye abacubungula ukuthi uma befinyelela inkumbulo efanayo eyabiwe, kuzodingeka ukuthi ilayishwe kuwe, futhi ngaleyo ndlela into efana nephrothokholi yokuxhasa. ukuhlangana kwenqolobane kuvele kanye nesoftware yalokhu. Umqondo othakazelisayo. Inkinga yangempela kwakungokunye. Konke lokhu kusebenzile, kodwa washeshe wathola izinkinga zokusebenza, ngoba akekho owaqonda amamodeli wokusebenza ezingeni elihle ngokwanele - yimaphi amaphethini okufinyelela ememori akhona, indlela yokuqinisekisa ukuthi ama-node awazange ahlangane ngokungapheli, njalonjalo.

Engiqhamuke nakho ku-H2O wukuthi yibona abathuthukisi yibona abanomthwalo wokubheka ukuthi ukufana kufihlwe kuphi nalapho kungenzeki khona. Ngiqhamuke nemodeli yekhodi eyenza ukubhala ikhodi yokusebenza okuphezulu kube lula futhi kube lula. Kodwa ukubhala ikhodi egijima kancane kunzima, kuzobukeka kubi. Udinga ukuzama sina ukubhala ikhodi enensa, kuzodingeka usebenzise izindlela ezingajwayelekile. Ikhodi yokubhuleka ibonakala ekuqaleni. Ngenxa yalokho, ngokuvamile ubhala ikhodi egijima ngokushesha, kodwa kufanele uthole ukuthi yini okufanele uyenze esimweni sememori eyabiwe. Konke lokhu kuboshelwe ezinhlelweni ezinkulu futhi ukuziphatha lapho kufana nezinhlaka ezinkulu ezingaguquguquki ku-Java efanayo. Ngiqonde ukuthi, cabanga ukuthi imicu emibili ibhalela uchungechunge olufanayo, enye yazo iyawina, kanti enye, ngokufanele, iyalahlekelwa, futhi awazi ukuthi iyiphi. Uma zingaguquguquki, i-oda lingaba yinoma yini oyifunayo - futhi lokhu kusebenza kahle kakhulu. Abantu bayakukhathalela ngempela ukuhleleka kokusebenza, babeka ukuguquguquka ezindaweni ezifanele, futhi balindele izinkinga zokusebenza ezihlobene nenkumbulo ezindaweni ezifanele. Uma kungenjalo, bangamane babhale ikhodi ngendlela yezihibe ukusuka ku-1 kuye ku-N, lapho u-N eyizigidigidi ezithile, ngethemba lokuthi wonke amacala ayinkimbinkimbi azofana ngokuzenzakalela - futhi ayisebenzi lapho. Kodwa ku-H2O lena akuyona i-Java noma i-Scala; ungayithatha ngokuthi β€œi-Java minus minus” uma ufuna. Lesi yisitayela sokuhlela esicace kakhulu futhi sifana nokubhala ikhodi elula ye-C noma ye-Java enamaluphu nama-array. Kodwa ngesikhathi esifanayo, inkumbulo ingacutshungulwa ngama-terabytes. Ngisasebenzisa i-H2O. Ngiyisebenzisa ngezikhathi ezithile kumaphrojekthi ahlukene - futhi kuseyinto eshesha kakhulu, izikhathi eziningi ngokushesha kunezimbangi zayo. Uma wenza i-Big Data ngedatha yekholomu, kunzima kakhulu ukushaya i-H2O.

Izinselele zobuchwepheshe

Andrei: Iyiphi inselelo yakho enkulu kuwo wonke umsebenzi wakho?

Cliff: Ingabe sixoxa ngengxenye yezobuchwepheshe noma engeyona eyobuchwepheshe yodaba? Ngingathi izinselelo ezinkulu akuzona ezezobuchwepheshe. 
Ngokuqondene nezinselelo zobuchwepheshe. Ngimane ngibahlule. Angazi nokuthi yayiyini enkulu kunazo zonke, kodwa kwakukhona ezinye ezinhle kakhulu ezithatha isikhathi eside, umzabalazo wengqondo. Lapho ngiya eLangeni, ngangiqinisekile ukuthi ngizokwenza umdidiyeli osheshayo, futhi isixuku sabadala sathi siphendula ukuthi angisoze ngaphumelela. Kodwa ngilandele le ndlela, ngabhala i-compiler phansi kumarejista, futhi kwakushesha kakhulu. Yayishesha njenge-C1 yesimanje, kodwa isinikezeli sasihamba kancane ngaleso sikhathi, futhi uma sibheka emuva kwakuyinkinga enkulu yesakhiwo sedatha. Bengiyidinga ukuze ngibhale i-graphical register allocator futhi angizange ngiyiqonde inkinga phakathi kokuvezwa kwekhodi nesivinini, eyayikhona ngaleso sikhathi futhi ibaluleke kakhulu. Kuvele ukuthi ukwakheka kwedatha kuvame ukweqa usayizi wenqolobane kuma-x86s angaleso sikhathi, ngakho-ke, uma ekuqaleni bengicabanga ukuthi umakhi werejista uzosebenzisa amaphesenti angama-5-10 esikhathi esiphelele se-jitter, empeleni kwavela ukuthi Amaphesenti angu-50.

Ngokuhamba kwesikhathi, umhlanganisi waba ngohlanzekile futhi osebenza kahle kakhulu, wayeka ukukhiqiza ikhodi embi ezimweni eziningi, futhi ukusebenza kwanda kwaqala ukufana nalokho okukhiqizwa umhlanganisi C. Ngaphandle kwalapho, yiqiniso, ubhala okuthile okungakusheshi ngisho no-C. . Uma ubhala ikhodi efana no-C, uzothola ukusebenza okufana no-C kwezinye izimo. Futhi lapho uqhubeka, kulapho uthola khona ikhodi kaningi eqondana nezinga elingu-C, isinikezeli serejista saqala ukubukeka njengento ephelele... kungakhathaliseki ukuthi ikhodi yakho isebenza ngokushesha noma ihamba kancane. Ngiqhubekile nokusebenza esabiweni ukuze ngenze ukukhetha okungcono. Wahamba kancane futhi ehamba kancane, kodwa wanikeza ukusebenza okungcono nokungcono ezimeni lapho kungekho muntu ongakwazi ukubhekana nazo. Ngingakwazi ukucwila kumthengisi werejista, ngingcwabe inyanga yonke yomsebenzi lapho, futhi kungazelelwe yonke ikhodi izoqala ukwenza u-5% ngokushesha. Lokhu kwenzeka ngezikhathi ezithile futhi owabela irejista waba umsebenzi wobuciko - wonke umuntu wayewuthanda noma wawuzonda, futhi abantu abavela esikoleni babuza imibuzo ngesihloko esithi "kungani konke kwenziwa ngale ndlela", kungani kungenjalo ukuskena komugqa, futhi uyini umehluko. Impendulo isafana: i-allocator esekelwe kumdwebo wegrafu kanye nomsebenzi ocophelela kakhulu onekhodi yebhafa ilingana nesikhali sokunqoba, inhlanganisela engcono kakhulu okungekho muntu ongayehlula. Futhi lokhu kuyinto engabonakali kalula. Konke okunye okwenziwa umdidiyeli kukhona izinto ezifundwe kahle, nakuba nazo zilethwe ezingeni lobuciko. Ngangihlale ngenza izinto okwakufanele ziguqule umdidiyeli umsebenzi wobuciko. Kodwa akukho kulokhu okwaba yinto engavamile - ngaphandle kwalowo owabela irejista. Iqhinga liwukuba uqaphele ehlisa ngaphansi komthwalo futhi, uma lokhu kwenzeka (ngingakwazi ukuchaza ngokuningiliziwe uma unesithakazelo), lokhu kusho ukuthi ungakwazi ukungena emgqeni ngobudlova, ngaphandle kwengozi yokuwela phezu kwe-kink esimisweni sokusebenza. Ngalezo zinsuku, kwakukhona inqwaba yabahlanganisi abagcwele, ababelengiswe ngama-baubles namakhwela, ababenababela amarejista, kodwa akekho omunye owayengakwenza.

Inkinga ukuthi uma ungeza izindlela ezingaphansi kokufakwa ngaphakathi, ukwandisa nokwandisa indawo ye-inlining, isethi yamanani asetshenzisiwe idlula ngokushesha inani lamarejista, futhi kufanele uwasike. Izinga elibucayi livame ukufika lapho owabelayo eyeka, futhi ikhandidethi eyodwa enhle yokuchitheka ifanele enye, uzothengisa izinto ezingajwayelekile. Inani lokufaka i-inlining lapha ukuthi ulahlekelwa ingxenye ye-overhead, i-overhead ngokushaya nokulondoloza, ungakwazi ukubona amanani ngaphakathi futhi ungawenza ngokugcwele. Izindleko zokufaka i-inlining ziwukuthi inani elikhulu lamanani abukhoma liyakhiwa, futhi uma i-allocator yakho yerejista isha ngaphezu kwalokho okudingekayo, ulahlekelwa ngokushesha. Ngakho-ke, abahlinzeki abaningi banenkinga: lapho i-inlining iwela umugqa othize, yonke into emhlabeni iqala ukuncishiswa futhi ukukhiqiza kungakwazi ukuchithwa endlini yangasese. Labo abasebenzisa i-compiler bangeza amanye ama-heuristics: isibonelo, ukuyeka ukufaka ngaphakathi kwe-inlining, ngokuqala ngosayizi omkhulu ngokwanele, njengoba izabelo zizolimaza yonke into. Le yindlela okwakhiwa ngayo i-kink kugrafu yokusebenza - wena ungaphakathi komugqa, ungaphakathi komugqa, ukusebenza kukhula kancane - bese uyakhula! - iwela phansi njengojeke osheshayo ngoba ulayini kakhulu. Le yindlela yonke into eyayisebenza ngayo ngaphambi kokufika kweJava. I-Java idinga ukufakwa kwe-inlining okuningi, ngakho-ke bekufanele ngenze isabi sami sibe nolaka kakhulu ukuze siphume ngaphandle kunokuphahlazeka, futhi uma uxhumeke kakhulu emgqeni, iqala ukuchitheka, kodwa bese kufika umzuzu β€œwokungachitheki”. Lokhu ukuqaphela okuthakazelisayo futhi kuvele kwafika kimi ngaphandle kwesizathu, kungabonakali, kodwa kukhokhe kahle. Ngithathe i-inlining enolaka futhi kwangiyisa ezindaweni lapho ukusebenza kwe-Java no-C kusebenza ndawonye. Basondelene impela - ngingabhala ikhodi ye-Java eshesha kakhulu kunekhodi engu-C nezinto ezinjalo, kodwa ngokwesilinganiso, esithombeni esikhulu sezinto, zicishe ziqhathaniswe. Ngicabanga ukuthi ingxenye yalokhu kufaneleka ukwabela irejista, okungivumela ukuthi ngingene emgqeni ngobuwula ngangokunokwenzeka. Ngivele ngifake yonke into engiyibonayo. Umbuzo lapha ukuthi ingabe isibambisi sisebenza kahle, noma umphumela uyikhodi yokusebenza ngobuhlakani. Lokhu kwakuyinselele enkulu: ukuqonda konke lokhu futhi ukwenze kusebenze.

Okuncane mayelana nokwabiwa kwerejista kanye nama-multi-cores

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Izinkinga ezinjengokwabiwa kwerejista zibukeka njengohlobo oluthile lwesihloko esingapheli, esingapheli. Ngiyazibuza ukuthi ngabe uke waba khona yini umbono obukeka sengathi uyathembisa bese wehluleka ekusebenzeni?

Cliff: Impela! Ukwabiwa kwerejista yindawo lapho uzama khona ukuthola ama-heuristics ukuze uxazulule inkinga ye-NP-complete. Futhi awusoze wazuza isisombululo esiphelele, akunjalo? Lokhu akunakwenzeka. Bheka, Ukuhlanganiswa Kwangaphambi Kwesikhathi - nakho kusebenza kabi. Ingxoxo lapha imayelana nezimo ezithile ezimaphakathi. Mayelana nokusebenza okuvamile, ukuze uhambe uyokala okuthile ocabanga ukuthi kusebenza kahle okujwayelekile - phela usebenzela ukuyithuthukisa! Ukwabiwa kwerejista kuyisihloko esimayelana nokusebenza. Uma usune-prototype yokuqala, iyasebenza futhi ipenda lokho okudingekayo, umsebenzi wokusebenza uyaqala. Udinga ukufunda ukukala kahle. Kungani ibalulekile? Uma unedatha ecacile, ungabheka izindawo ezahlukene futhi ubone: yebo, kwasiza lapha, kodwa yilapho yonke into yaphuka khona! Eminye imibono emihle ivela, ungeza ama-heuristics amasha futhi ngokuzumayo yonke into iqala ukusebenza kangcono kancane ngokwesilinganiso. Noma kungaqali. Ngibe nenqwaba yamacala lapho besilwela ukusebenza ngamaphesenti amahlanu okwahlukanisa intuthuko yethu kulowo owabelwa ngaphambili. Futhi ngaso sonke isikhathi kubukeka kanje: endaweni ethile uwina, endaweni ethile ulahlekelwa. Uma unamathuluzi amahle okuhlaziya ukusebenza, ungathola imibono elahlekile futhi uqonde ukuthi kungani behluleka. Mhlawumbe kufanelekile ukushiya yonke into njengoba injalo, noma mhlawumbe ukuthatha indlela ebucayi yokulungisa kahle, noma ukuphuma uyolungisa enye into. Kuyinqwaba yezinto! Ngenze lokhu kugebenga okupholile, kodwa futhi ngiyakudinga lokhu, nalokhu, nalokhu - kanye nokuhlanganiswa kwabo okuphelele kunikeza ukuthuthuka okuthile. Nababodwa bangahluleka. Lona uhlobo lomsebenzi wokusebenza ezinkingeni eziphelele ze-NP.

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Umuntu uba nomuzwa wokuthi izinto ezinjengokudweba kuma-allocators ziyinkinga esivele ixazululiwe. Hhayi-ke, kunqunyelwe wena, ukwahlulela ngalokho okushoyo, ngakho-ke kuyafaneleka ke...

Cliff: Ayixazululwa kanjalo. Nguwe okufanele ukuguqule kube β€œkuxazululiwe”. Kunezinkinga ezinzima futhi ezidinga ukuxazululwa. Uma lokhu sekwenziwe, sekuyisikhathi sokusebenza ekukhiqizeni. Udinga ukubhekana nalo msebenzi ngokufanele - yenza amabhentshimakhi, uqoqe amamethrikhi, uchaze izimo lapho, lapho uhlehlela emuva enguqulweni yangaphambilini, i-hack yakho yakudala iqale ukusebenza futhi (noma okuphambene nalokho, ima). Futhi ungayeki uze uzuze okuthile. Njengoba ngishilo kakade, uma kunemibono epholile engazange isebenze, kodwa emkhakheni wokwabiwa kwamarejista wemibono cishe kungapheli. Ngokwesibonelo, ungakwazi ukufunda izincwadi zesayensi. Nakuba manje le ndawo isiqalile ukuhamba kancane futhi isicace kakhulu kunasebusheni bayo. Kodwa-ke, kunabantu abangenakubalwa abasebenza kulo mkhakha futhi yonke imibono yabo ifanelekile ukuzama, bonke balinde emaphikweni. Futhi awukwazi ukusho ukuthi zinhle kangakanani ngaphandle kokuthi uzizame. Bahlanganisa kahle kangakanani nakho konke okunye ku-llocator yakho, ngoba i-llocator yenza izinto eziningi, futhi eminye imibono ngeke isebenze ku-llocator yakho ethize, kodwa kwenye i-llocator izoba lula. Indlela eyinhloko yokuwina kulowo okhipha isabelomali ukudonsa izinto ezihamba kancane ngaphandle kwendlela eyinhloko futhi uyiphoqe ukuba ihlukanise imingcele yezindlela ezihamba kancane. Ngakho-ke uma ufuna ukusebenzisa i-GC, thatha indlela enensayo, yehlisa ukusebenza kahle, yenza okuhlukile, zonke lezo zinto - uyazi ukuthi lezi zinto azivamile. Futhi ziyivelakancane ngempela, ngihlolile. Wenza umsebenzi owengeziwe futhi ususa imikhawulo eminingi kulezi zindlela ezihamba kancane, kodwa akunandaba ngempela ngoba zihamba kancane futhi azivamile ukuhamba. Isibonelo, i-null pointer - ayisoze yenzeke, akunjalo? Udinga ukuba nemizila eminingana yezinto ezihlukene, kodwa akufanele iphazamise eyinhloko. 

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Ucabangani ngama-multi-cores, uma kunezinkulungwane zama-cores ngesikhathi esisodwa? Ingabe lokhu kuyinto ewusizo?

Cliff: Impumelelo ye-GPU ikhombisa ukuthi iwusizo impela!

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Zikhethekile. Kuthiwani ngamaphrosesa enhloso ejwayelekile?

Cliff: Nokho, leyo kwakuyimodeli yebhizinisi ka-Azul. Impendulo yabuya ngesikhathi lapho abantu bekuthanda ngempela ukusebenza okungabikezelwa. Kwakunzima ukubhala ikhodi ehambisanayo ngaleso sikhathi. Imodeli yokubhala ikhodi ye-H2O iyakala kakhulu, kodwa akuyona imodeli yenjongo evamile. Mhlawumbe okuvamile kancane kunalapho usebenzisa i-GPU. Ingabe sikhuluma ngobunkimbinkimbi bokuthuthukisa into enjalo noma ubunkimbinkimbi bokuyisebenzisa? Isibonelo, u-Azul wangifundisa isifundo esithokozisayo, esingacacile: izinqolobane ezincane zivamile. 

Inselele enkulu empilweni

Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Kuthiwani ngezinselele okungezona ezobuchwephesha?

Cliff: Inselele enkulu kwaba ukungabi... nomusa nokuba nomusa kubantu. Futhi ngenxa yalokho, ngangihlala ngizithola ngisezimweni zokungqubuzana ngokwedlulele. Labo lapho ngangazi ukuthi izinto azihambi kahle, kodwa bengingazi ukuthi ngingaqhubekela kanjani nalezo zinkinga futhi ngingakwazi ukuzisingatha. Izinkinga eziningi zesikhathi eside, ezathatha amashumi eminyaka, zaphakama ngale ndlela. Iqiniso lokuthi i-Java inabahlanganisi be-C1 ne-C2 iwumphumela oqondile walokhu. Iqiniso lokuthi kwakungekho ukuhlanganiswa kwamazinga amaningi ku-Java iminyaka eyishumi ilandelana nakho kuwumphumela oqondile. Kusobala ukuthi besiludinga lolu hlelo, kodwa akucaci ukuthi kungani lungekho. Ngibe nezinkinga nonjiniyela oyedwa... noma iqembu lonjiniyela. Ngesinye isikhathi, lapho ngiqala ukusebenza e-Sun, ngangi ... Kulungile, hhayi kuphela lapho, ngokuvamile ngihlale nginombono wami kukho konke. Futhi bengicabanga ukuthi kuyiqiniso ukuthi ungavele uthathe leli qiniso lakho ulikhulume ngqo. Ikakhulukazi njengoba ngangiqinisile ngokumangalisayo isikhathi esiningi. Futhi uma ungayithandi le ndlela ... ikakhulukazi uma ngokusobala ungalungile futhi wenza izinto ezingenangqondo ... Ngokuvamile, bambalwa abantu ababengakwazi ukubekezelela le ndlela yokuxhumana. Nakuba abanye bengakwazi, njengami. Impilo yami yonke yakhelwe phezu kwezimiso ezihlonishwayo. Uma ungibonisa into engalungile, ngivele ngiphenduke ngithi: usho umbhedo. Ngesikhathi esifanayo, yiqiniso, ngiyaxolisa futhi konke lokho, ngizophawula ukufaneleka, uma kukhona, futhi ngithathe ezinye izinyathelo ezifanele. Ngakolunye uhlangothi, ngiqinisile ngokushaqisayo mayelana nephesenti elikhulu ngokushaqisayo lengqikithi yesikhathi. Futhi akusebenzi kahle kakhulu ebudlelwaneni nabantu. Angizami ukuba muhle, kodwa ngibuza umbuzo ngokungagwegwesi. "Lokhu akusoze kwasebenza, ngoba eyodwa, ezimbili, ezintathu." Futhi bathi, β€œOh!” Kwakuneminye imiphumela okungenzeka ukuthi kwakungcono ukuyiziba: ngokwesibonelo, leyo eyaholela edivosini nomkami neminyaka eyishumi yokucindezeleka ngemva kwalokho.

Inselele umzabalazo nabantu, ngokubona kwabo lokho ongakwenza noma ongakwazi ukukwenza, okubalulekile nokungeyikho. Kube nezinselelo eziningi mayelana nesitayela sokubhala amakhodi. Ngisabhala amakhodi amaningi, futhi ngalezo zinsuku kwadingeka ngehlise ijubane ngoba ngangenza imisebenzi eminingi ehambisanayo futhi ngiyenza kabi, esikhundleni sokugxila kowodwa. Uma ngibheka emuva, ngibhale uhhafu wekhodi yomyalo we-Java JIT, umyalo we-C2. Ikhodi elandelayo eshesha kakhulu ibhale uhhafu njengokunensa, uhhafu olandelayo njengokunensa, futhi kwaba ukwehla okukhulu. Umuntu wesikhombisa kulolu hlu wayenensa kakhulu - lokho kwenzeka njalo! Ngithinte amakhodi amaningi. Ngabheka ukuthi ubani obhale ukuthi yini, ngaphandle kokukhetha, ngagqolozela ikhodi yabo, ngabuyekeza ngayinye yazo, futhi ngaqhubeka ngibhala kakhulu kunanoma yimuphi wabo. Le ndlela yokusebenza ayisebenzi kahle kakhulu kubantu. Abanye abantu abakuthandi lokhu. Futhi lapho bengakwazi ukukusingatha, zonke izinhlobo zezikhalazo ziqala. Isibonelo nje, ngake ngatshelwa ukuthi angiyeke ukubhala amakhodi ngoba ngibhala amakhodi amaningi futhi kwakubeka engcupheni iqembu, futhi konke kwafana nehlaya kimi: mfo, uma kunyamalala iqembu lonke ngilokhu ngibhala ikhodi, Ngizolahlekelwa amaqembu amathathu kuphela. Ngakolunye uhlangothi, uma ngiqhubeka ngibhala ikhodi futhi ulahlekelwa ingxenye yeqembu, lokho kuzwakala njengokuphatha okubi kakhulu. Angikaze ngicabange ngakho ngempela, angikaze ngikhulume ngakho, kodwa kwakusendawana thize ekhanda lami. Umcabango wawuzulazula ngemuva engqondweni yami: β€œIngabe nonke niyadlala ngami?” Ngakho, inkinga enkulu kwakumina kanye nobudlelwano bami nabantu. Manje sengiziqonda kangcono kakhulu, bengingumholi weqembu labahleli bohlelo isikhathi eside, futhi manje ngitshela abantu ngokuqondile: niyazi, nginguye, futhi kuzodingeka nibhekane nami - ingabe kulungile uma ngima lapha? Futhi lapho beqala ukubhekana nakho, konke kwasebenza. Eqinisweni, angimubi noma ngimuhle, anginazo izinhloso ezimbi noma izifiso zobugovu, ingqikithi yami nje, futhi ngidinga ukuphila nayo ngandlela thize.

Andrei: Muva nje wonke umuntu uqale ukukhuluma ngokuzazi kwabaqalayo, namakhono athambile ngokujwayelekile. Ungathini ngalokhu?

Cliff: Yebo, lokho kwaba ukuqonda nesifundo engasithola ekudivoseni kwami ​​nomkami. Engakufunda esahlukaniso kwakuwukuqonda nami. Ngale ndlela ngaqala ukuqonda abanye abantu. Qonda ukuthi lokhu kusebenzisana kusebenza kanjani. Lokhu kwaholela ekutholakaleni okulandelanayo. Bekukhona ukwazi ukuthi ngingubani nokuthi ngimele ini. Ngenzani: kuphakathi kokuthi ngimatasa ngomsebenzi, noma ngigwema ukungqubuzana, noma enye into - futhi leli zinga lokuzazi liyasiza ngempela ukuzigcina ngilawula. Ngemva kwalokhu konke kuhamba kalula kakhulu. Into eyodwa engayitholanga kimina kuphela, kodwa nakwabanye abahleli bezinhlelo ukungakwazi ukukhuluma ngamazwi uma usesimweni sokucindezeleka ngokomzwelo. Isibonelo, uhlezi lapho ubhala ikhodi, esimweni sokugeleza, bese beza begijima kuwe futhi baqale ukuklabalasa ngama-hysterics ukuthi kukhona okuphukile futhi manje kuzothathwa izinyathelo ezimbi kakhulu kuwe. Futhi awukwazi ukusho igama ngoba usesimweni sokucindezeleka ngokomzwelo. Ulwazi olutholiwe lukuvumela ukuthi ulungiselele lesi sikhathi, usinde futhi uqhubekele ohlelweni lokuhlehla, emva kwalokho ungenza okuthile. Ngakho yebo, lapho uqala ukubona ukuthi konke kusebenza kanjani, kuwumcimbi omkhulu oshintsha impilo. 
Mina ngokwami ​​angikwazanga ukuthola amagama alungile, kodwa ngakhumbula ukulandelana kwezenzo. Iphuzu liwukuthi lokhu kusabela kungokomzimba njengokusho, futhi udinga isikhala. Isikhala esinjalo, ngomqondo weZen. Yilokhu kanye okudingeka kuchazwe, bese uhlehla ngokushesha - suka nje ngokomzimba. Lapho ngithula ngomlomo, ngiyakwazi ukucubungula isimo ngokomzwelo. Njengoba i-adrenaline ifinyelela ebuchosheni bakho, ikushintshela kumodi yokulwa noma yendiza, awusakwazi ukusho lutho, cha - manje uyisilima, unjiniyela oshaya ngesiswebhu, ongakwazi ukuphendula kahle noma ukumisa ukuhlasela, futhi umhlaseli ukhululekile. ukuhlasela kaninginingi. Kufanele uqale ube nguwe futhi, uphinde ulawule, uphume kumodi "yokulwa noma yokundiza".

Futhi kulokhu sidinga indawo yokukhuluma. Isikhala esikhululekile nje. Uma usho noma yini, ungasho lokho kanye, bese uhamba futhi uzitholele "isikhala" ngempela: hamba uhambe epaki, uzivalele eshaweni - akunandaba. Into esemqoka ukunqamula okwesikhashana kuleso simo. Lapho nje ucisha okungenani imizuzwana embalwa, ukulawula kuyabuya, uqala ukucabanga kahle. "Kulungile, angisona isilima, angenzi izinto eziwubuphukuphuku, ngingumuntu owusizo kakhulu." Uma usukwazile ukuzikholisa, sekuyisikhathi sokudlulela esigabeni esilandelayo: ukuqonda okwenzekile. Uhlaselwe, ukuhlasela kwavela lapho ubungakulindele, kwakuwukuqamekela okungathembekile, okubi. Kubi lokhu. Isinyathelo esilandelayo siwukuqonda ukuthi kungani umhlaseli ekudinga lokhu. Ngempela, ngani? Mhlawumbe ngoba yena ngokwakhe uthukuthele? Kungani ehlanya? Isibonelo, ngoba wazikhohlisa futhi akakwazi ukwamukela umthwalo wemfanelo? Lena indlela yokusingatha ngokucophelela sonke isimo. Kodwa lokhu kudinga indawo yokuqondisa, indawo yokukhuluma. Isinyathelo sokuqala ukunqamula ukuxhumana ngamazwi. Gwema ingxoxo ngamazwi. Ikhansele, hamba ngokushesha ngangokunokwenzeka. Uma kuyingxoxo yocingo, vele uvale ucingo - leli ikhono engalifunda ekukhulumeni nomkami wakudala. Uma ingxoxo ingahambi kahle, vele uthi "usale kahle" bese uvala ucingo. Ngakolunye uhlangothi lwefoni: "blah blah blah", uyaphendula: "yebo, bye!" bese eluvala ucingo. Uqeda nje ingxoxo. Ngemva kwemizuzu emihlanu, lapho ikhono lokucabanga ngendlela enengqondo libuyela kuwe, usupholile kancane, kuba nokwenzeka ukucabanga ngakho konke, okwenzekayo nokuthi kuzokwenzekani ngokulandelayo. Futhi qala ukwakha impendulo ecabangelayo, kunokuba nje usabele ngenxa yomzwelo. Kimina, intuthuko ekuzaziseni kwakuyiqiniso lokuthi uma ngicindezelekile ngokomzwelo angikwazi ukukhuluma. Ukuphuma kulesi simo, ukucabanga nokuhlela ukuthi uzophendula kanjani futhi unxephezele izinkinga - lezi yizinyathelo ezifanele esimweni lapho ungakwazi ukukhuluma. Indlela elula iwukubalekela isimo lapho ukucindezeleka ngokomzwelo kubonakala khona futhi umane uyeke ukuhlanganyela kulokhu kucindezeleka. Emva kwalokho usukwazi ukucabanga, lapho usukwazi ukucabanga, ukwazi ukukhuluma, njalo njalo.

Ngendlela, enkantolo, ummeli ophikisayo uzama ukwenza lokhu kuwe - manje sekucacile ukuthi kungani. Ngoba unamandla okukucindezela uze ufinyelele esimweni sokuthi awukwazi ngisho nokubiza igama lakho, isibonelo. Ngomqondo ongokoqobo, ngeke ukwazi ukukhuluma. Uma lokhu kwenzeka kuwe, futhi uma wazi ukuthi uzozithola usendaweni lapho izimpi zamazwi zishubile, endaweni efana nenkantolo, ungafika nommeli wakho. Ummeli uzokumela futhi amise ukuhlasela ngamazwi, futhi uzokwenza ngendlela esemthethweni ngokuphelele, futhi isikhala seZen esilahlekile sizobuyela kuwe. Isibonelo, kwadingeka ngishayele umndeni wami ucingo izikhathi ezimbalwa, ijaji lalinobungane kakhulu ngalokhu, kodwa ummeli ophikisayo waklabalasa futhi wangithethisa, angikwazanga ngisho nokuzwakalisa izwi. Kulezi zimo, ukusebenzisa umlamuli kusebenza kangcono kimi. Umlamuli umisa yonke le ngcindezi ethela phezu kwakho ngokuqhubekayo, uthola isikhala esidingekayo se-Zen, futhi nekhono lokukhuluma liyabuya. Lona wonke umkhakha wolwazi lapho kunokuningi okumele kufundwe, kuningi ongakuthola ngaphakathi kuwena, futhi konke lokhu kuphenduka izinqumo zamasu ezisezingeni eliphezulu ezehlukene kubantu abahlukene. Abanye abantu abanazo izinkinga ezichazwe ngenhla; imvamisa, abantu abangochwepheshe bokuthengisa abanazo. Bonke laba bantu abaziphilisa ngamazwi - abahlabeleli abadumile, izimbongi, abaholi bezenkolo nosopolitiki, bahlala benento abangayisho. Abanazo izinkinga ezinjalo, kodwa mina nginazo.

Andrei: Beku...bekungalindelekile. Kuhle, sesikhulume kakhulu futhi sekuyisikhathi sokuqeda le ngxoxo. Nakanjani sizohlangana engqungqutheleni futhi sizokwazi ukuqhubeka nale ngxoxo. Sanibona eHydra!

Ungaqhubeka nengxoxo yakho no-Cliff engqungqutheleni ye-Hydra 2019, ezoba ngoJulayi 11-12, 2019 e-St. Uzofika nombiko "Isipiliyoni se-Azul Hardware Transactional Memory". Amathikithi angathengwa kuwebhusayithi esemthethweni.

Source: www.habr.com

Engeza amazwana