JavaScript forums be like:
- Is it interpreted or compiled?
- Yes.

@adsellor
Welllll, the COMPILED byte code is INTERPRETED by the vm, soooo

@gurgen բայց host environment լեզվի հետ դա կապ չունի

@adsellor
Հա դե բայթ կոդն էլ ինտերպրետ չի լինում յանի բան ասիր, ինչ ասիք???

@gurgen @adsellor js֊ը eval չունի՞՝ ուրեմն եթէ ունի չի կարող իրականում նէյթիւ կոդ քոմփայլ լինել։ կամ պիտի իր մէջ ինտերպրետատոր ունենայ։

@norayr
V8-ը եթե շատ հայ լևլ նայենք սկզբից տակից նեյթիվ կոդ ա սարքում ու անմիջապես էքզեքյութ անում։ Լիքը օպտիմիզացիաներ են փորձում անել։ eval-ը ժամանակակից(2012-ից հետո) ջսում անտիպատերն ա, որ եթե ինչ-որ մասում ունեցար կոդիդ ստիպված ֆոլբեք ա լինելու ինտերպրետացիայի ու մինչև էքզեքյութ անելը չեն կարենալու իրա հետ ոչինչ անել։
@adsellor

Հետևել

@norayr @adsellor
Էս ռանթայմ օպտիմիզացիների մասը շատ հետաքրքիր ա։ Մի հատ թոլք կար ասում էր թե ոնց կոմպայլերին «հաճելի» կոդ գրելով մի քանի անգամ աշխատեցնելուց հետո ինքը փորձում ա հասկանա բարդ օբյեկտներիդ սխեման ու իր համար ստատիկ դեֆինիշն պահի

@norayr @adsellor
Օրինակ եթե մի օբյեկտ ունես որը միշտ ունենում ա երկու պրոպերտի նույն տիպի դատայով ու էդ օբյեկտիդ նման օբյեկտները շատ ռեֆերենս են ունենում, ասենք յուզերի սթեյթ ես պահում ՝{verified: true, loggedIn: true}` ինքը կսկի իրան որպես ստատիկ տիպ ընկալել

@gurgen @adsellor շատ հետաքրքիր ա ամէնը։ մանաւանդ որ v8֊ը ֆոլբեք ա լինում։ (:
ուզեցի մի հատ էլ նայել v8֊ի բենչմարկները, բայց էս programmer language benchmark game֊ը հիմա ոնց որ թոյլ չի տալիս ամէն ուզածդ ամէն ուզածդի հետ համեմատել, կամ ձեւ չեմ գտնում։

@gurgen @adsellor nod.js֊ը v8՞ ա։

հետաքրքիր ա, որ ինտերպրետատորները միշտ շաաատ մեմորի են ուտում, եթէ նոյնիսկ արագ են կատարւում։

օրինակ՝
spectral norm
ada, 2 sec
c 1.98 sec
pascal 3.98 sec
node 4.40 sec
ada mem 4,248
c mem 988
pascal mem 1,832
node mem 61,768

իսկ ստեղ վերջն ա՝
n-body
ada 9.71 sec
c 7.30 sec
pascal 22.00 sec
node 19.48 sec

ada mem 1,784
c mem 8
pascal mem 8
node mem 35,412

տուեալները ստեղից՝
benchmarksgame-team.pages.debi
benchmarksgame-team.pages.debi
benchmarksgame-team.pages.debi

@norayr իրականում ինձ թվումա ֆոլբեք սխալա ասել, որովհետև ինքը ամեն դեպքում պետքա մի անգամ ինտեռպռետ անի ast կառուցելուց հետո, մինչև օպտիմիզացնելը։ ՈՒ եթե կոդի հատվածը չի օպտիմիզացվում, ինքը էլի ինտեռպռետացիայի միջովա անցնում։ Ճի՞շտ եմ հիշում @gurgen

@adsellor
Հա ճիշտ ես։ Էդ ast-ն հետո բայթ կոդ ա դառնում որը jit կոմպայլերը դարձնում ա մըշին կոդ
@norayr

@gurgen @norayr հետաքրքիրա, իսկ եթե evil անեմ կոդի հատված, որը արդեն օպտիմիզացվելա, ի՞նչ կանի տակից։

@adsellor @norayr ինչքան գիտեմ ոչմիբան, որովհետև ինքը կոնտենտին չի նայում էվալի, ուղղակի կոդ֊ստրինգ ա որը պետք ա ինտերպրետ անել չի կարա իդենտիֆիկացնի ուրիշ եղած բլոկի հետ, նույնն էլ գործում ա with() {}-ի համար

Sign in to participate in the conversation
թութ

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!