Nodejs optimization: جیاوازیی نێوان پێداچوونەوەکان

لە چاوگ
No edit summary
ب (ڕاستکردنەوەی ڕێزمان و وردە دەستکاریی تر)
 
ھێڵی ١: ھێڵی ١:
له‌ ڕابردوودا له‌به‌ر ئه‌وه‌ی جاڤاسكریپت ته‌نیا له‌ وێبگه‌ڕ به‌كار ده‌هات بۆیه‌ زۆر گرنگی نه‌ده‌درا به‌ نووسینی كۆدی خاوێن و چوست. دوای دروستبوونی Node.js و كاركردنی ڕاسته‌وخۆی جاڤا سكریپت له‌گه‌ڵ سیسته‌م ده‌بێ هه‌موو لایه‌نه‌كانی كۆدی چوست له‌به‌ر چاو بگیرێت چونكه‌ چیتر كۆد بۆ وێبگه‌ڕ نانوسیت وه‌ ئه‌گه‌ر پڕۆگرامه‌كه‌ت بگاته‌ كۆتایی بیرگه‌ ئه‌وا ده‌وه‌ستێ، ئه‌مه‌ش واتا چیتر ڕاژه‌كه‌ت به‌رده‌ست نیه‌.
له‌ ڕابردوودا له‌به‌ر ئه‌وه‌ی جاڤاسكریپت ته‌نیا له‌ وێبگه‌ڕ به‌كار ده‌هات، زۆر گرنگی نه‌ده‌درا به‌ نووسینی [[كۆدی خاوێن]] و چوست. دوای دروستبوونی [[Node.js]] و كاركردنی ڕاسته‌وخۆی جاڤا سكریپت له‌گه‌ڵ سیسته‌م، گرنگیدان بە خاوێنی کۆدنووسین و چوستی لەبەرچاوگیرا. ئەمڕۆ پێویستە هه‌موو لایه‌نه‌كانی كۆدی چوست له‌به‌ر چاو بگیرێت، چونكه‌ چیتر كۆد بۆ وێبگه‌ڕ نانووسیت. لێرەوە ئه‌گه‌ر بەرنامەکەت بگاته‌ كۆتایی بیرگه‌ ئه‌وا ده‌وه‌ستێ، ئه‌مه‌ش واتا چیتر ڕاژه‌كه‌ت به‌رده‌ست نیه‌.


== Node.js و V8 ==
== Node.js و V8 ==
Node.js بۆ وه‌رگێران و هه‌ڵكردنی جاڤا سكریپت بزوێنی V8ی گووگڵ به‌كار ده‌با. V8  له‌كاتی وه‌رگێڕانی پرۆگرامه‌كه‌ت هه‌وڵ ده‌دات پێشبینی و لێكدانه‌وه‌ بۆ ده‌رئه‌نجامه‌كانی پرۆگرامه‌كه‌ت بكات. بۆ نمونه‌ ئه‌گه‌ر فه‌نكشنێك به‌ هه‌مان تایبه‌تمه‌ندی چه‌ندان جار بانگ بكرێت ئه‌وه‌ V8 هه‌وڵده‌دات ئه‌و فه‌نكشنه‌ باشینه‌ساز (optimize) بكات وه‌ وای داده‌نێ كه‌ ده‌رئه‌نجامه‌كه‌ی هه‌ر یه‌ك جۆر ده‌بێت.
[[Node.js]] بۆ وه‌رگێران و هه‌ڵكردنی جاڤا سكریپت بزوێنی [[V8]]ی گووگڵ به‌كار ده‌هێنێت. [[V8]] له‌كاتی وه‌رگێڕانی پرۆگرامه‌كه‌ت هه‌وڵ ده‌دات پێشبینی و لێكدانه‌وه‌ بۆ ده‌رئه‌نجامه‌كانی پرۆگرامه‌كه‌ت بكات. بۆ نمونه‌ ئه‌گه‌ر (پابەندی function)ـەک به‌ هه‌مان تایبه‌تمه‌ندی، چه‌ندان جار بانگ بكرێت ئه‌وا [[V8]] هه‌وڵده‌دات ئه‌و پابەندیە پوختە (باشینه‌ساز optimize) بكات وه‌ وای داده‌نێ كه‌ ده‌رئه‌نجامه‌كه‌ی هه‌ر یه‌ک جۆر ده‌بێت.


==باشینه‌سازی گۆڕاوه‌كان و ژماره‌كان له V8 ==
==باشینه‌سازی گۆڕاوه‌كان و ژماره‌كان له V8 ==
ھێڵی ١٢: ھێڵی ١٢:
</source>
</source>


كۆدێكی هاوشێوه‌ له‌ جاڤا بنوسیت ئه‌وا هه‌ڵه‌ت نیشان ده‌دات. له‌به‌ر ئه‌وه‌ی له‌ هێڵی یه‌كه‌م گۆڕاوی a به‌ جۆری ژماره‌ی ته‌واو (integer) پێناسه‌ كراوه‌ كه‌چی له‌ هێڵی دووه‌م نرخه‌كه‌ی گۆڕاوه‌ بۆ ژمارەی کەرت(Float point number). به‌لام له‌ جاڤاسكریپت زۆر ئاسایی كارده‌كات له‌به‌ر ئه‌وه‌ی جاڤاسكریپت جۆری ژماره‌ی ته‌واوی نیه‌ به‌ڵكو هه‌موو ژماره‌كان جۆریان ژماره‌ی كه‌رته‌. هه‌رچه‌نده‌ نووسینی كۆدێكی هاوشێوه‌ له‌ جاڤاسكریپت ئاسایه‌ به‌لام بۆ باشینەسازی له‌ V8 پێچه‌وانه‌یه‌.
كۆدێكی هاوشێوه‌ له‌ جاڤا بنوسیت ئه‌وا هه‌ڵه‌ت نیشان ده‌دات. له‌به‌ر ئه‌وه‌ی له‌ هێڵی یه‌كه‌م گۆڕاوی a به‌ جۆری ژماره‌ی ته‌واو (integer) پێناسه‌ كراوه‌ كه‌چی له‌ هێڵی دووه‌م نرخه‌كه‌ی گۆڕاوه‌ بۆ ژمارەی کەرت(Float point number). به‌لام له‌ جاڤاسكریپت زۆر ئاسایی كارده‌كات له‌به‌ر ئه‌وه‌ی جاڤاسكریپت جۆری ژماره‌ی ته‌واوی نیه‌ به‌ڵكو هه‌موو ژماره‌كان جۆریان ژماره‌ی كه‌رته‌. هه‌رچه‌نده‌ نووسینی كۆدێكی هاوشێوه‌ له‌ جاڤاسكریپت ئاسایه‌ به‌لام بۆ باشینەسازی له‌ [[V8]] پێچه‌وانه‌یه‌.


<source lang="javascript">
<source lang="javascript">
ھێڵی ٢٨: ھێڵی ٢٨:
</source>
</source>


فایلێك دروست بكه‌ به‌ به‌كارهێنانی ئه‌و كۆده‌ی سه‌ره‌وه‌، پاشان كاری پێبكه‌ له‌ ڕێگای فرمانی (Command)
به‌ به‌كارهێنانی ئه‌و كۆده‌ی سه‌ره‌وه‌ (پەڕگە file)ـێک  دروست بكه‌، پاشان له‌ ڕێگای فرمانی (Command) کاری پێ بكه‌
 
  # node --allow-natives-syntax --trace_opt --trace_deopt myfile.js
  # node --allow-natives-syntax --trace_opt --trace_deopt myfile.js
سه‌رنجی نیشانی  allow-natives-syntax بده‌.  
سه‌رنجی نیشانی  allow-natives-syntax بده‌.  


ھێڵی ٣٨: ھێڵی ٤٠:
</source>
</source>


ده‌بینین كه‌ V8 هیچ كێشه‌یه‌كی نیه‌ له‌ باشینه‌سازكردنی فه‌نكشنی square ئه‌م كۆده‌ی خواراوه‌ زیاد بكه‌و دووباره‌ كاری پێبكه‌وه‌.
ده‌بینین كه‌ [[V8]] هیچ كێشه‌یه‌كی نیه‌ له‌ باشینه‌سازكردنی پابەندییsquare ئه‌م كۆده‌ی خواراوه‌ زۆر بكه‌و دووباره‌ كاری پێ بكه‌وه‌.
<source lang="javascript">
<source lang="javascript">
%OptimizeFunctionOnNextCall(square);
%OptimizeFunctionOnNextCall(square);
ھێڵی ٥٣: ھێڵی ٥٥:
  [removing optimized code for: square]
  [removing optimized code for: square]
</source>
</source>
ئه‌مه‌ ڕاپۆرتێكی درێژه‌ له‌ سه‌ر ئه‌وه‌ی كه‌ V8 پاش باشینه‌سازكردنی (optimize) فه‌نكشنی square دووباره‌ ناچار بووه‌ به‌ لابردنی له‌به‌ر ئه‌وه‌ی جۆری گۆڕاوه‌كه‌مان گۆڕی.
ئه‌مه‌ ڕاپۆرتێكی درێژه‌ له‌ سه‌ر ئه‌وه‌ی كه‌ V8 پاش باشینه‌سازكردنی پابەندیی square دووباره‌ ناچار بووه‌ به‌ لابردنی، له‌به‌ر ئه‌وه‌ی جۆری گۆڕاوه‌كه‌مان گۆڕی.


له‌به‌رئه‌وه‌ باشتره‌ ده‌ستكاری جۆری گۆڕاوه‌كان نه‌كه‌ین. له‌ داهاتوو دا چ جۆرێكیان بۆ داده‌نێین باشتره‌ له‌ ئێستادا به‌هه‌مان جۆر پێناسیان بكه‌ین.
بەم شێوەیە باشتره‌ ده‌ستكاری جۆری گۆڕاوه‌كان نه‌كه‌ین. له‌ داهاتوو دا چ جۆرێكیان بۆ داده‌نێین باشتره‌ له‌ ئێستادا به‌هه‌مان جۆر پێناسیان بكه‌ین.


{{DISPLAYTITLE:باشینه‌سازی (Optimization) له‌ Node.js}}
{{DISPLAYTITLE:باشینه‌سازی (Optimization) له‌ Node.js}}
[[Category:WebDesign]]
[[Category:WebDesign]]

دوایین پێداچوونەوەی ‏١١:١٢، ٣ی نیسانی ٢٠١٨

له‌ ڕابردوودا له‌به‌ر ئه‌وه‌ی جاڤاسكریپت ته‌نیا له‌ وێبگه‌ڕ به‌كار ده‌هات، زۆر گرنگی نه‌ده‌درا به‌ نووسینی كۆدی خاوێن و چوست. دوای دروستبوونی Node.js و كاركردنی ڕاسته‌وخۆی جاڤا سكریپت له‌گه‌ڵ سیسته‌م، گرنگیدان بە خاوێنی کۆدنووسین و چوستی لەبەرچاوگیرا. ئەمڕۆ پێویستە هه‌موو لایه‌نه‌كانی كۆدی چوست له‌به‌ر چاو بگیرێت، چونكه‌ چیتر كۆد بۆ وێبگه‌ڕ نانووسیت. لێرەوە ئه‌گه‌ر بەرنامەکەت بگاته‌ كۆتایی بیرگه‌ ئه‌وا ده‌وه‌ستێ، ئه‌مه‌ش واتا چیتر ڕاژه‌كه‌ت به‌رده‌ست نیه‌.

Node.js و V8

Node.js بۆ وه‌رگێران و هه‌ڵكردنی جاڤا سكریپت بزوێنی V8ی گووگڵ به‌كار ده‌هێنێت. V8 له‌كاتی وه‌رگێڕانی پرۆگرامه‌كه‌ت هه‌وڵ ده‌دات پێشبینی و لێكدانه‌وه‌ بۆ ده‌رئه‌نجامه‌كانی پرۆگرامه‌كه‌ت بكات. بۆ نمونه‌ ئه‌گه‌ر (پابەندی function)ـەک به‌ هه‌مان تایبه‌تمه‌ندی، چه‌ندان جار بانگ بكرێت ئه‌وا V8 هه‌وڵده‌دات ئه‌و پابەندیە پوختە (باشینه‌ساز optimize) بكات وه‌ وای داده‌نێ كه‌ ده‌رئه‌نجامه‌كه‌ی هه‌ر یه‌ک جۆر ده‌بێت.

باشینه‌سازی گۆڕاوه‌كان و ژماره‌كان له V8

گه‌ر ئه‌م كۆده‌ی خواره‌وه‌ به‌ نمونه‌ وه‌ربگرین:

let a = 3;
a = 3.14;

كۆدێكی هاوشێوه‌ له‌ جاڤا بنوسیت ئه‌وا هه‌ڵه‌ت نیشان ده‌دات. له‌به‌ر ئه‌وه‌ی له‌ هێڵی یه‌كه‌م گۆڕاوی a به‌ جۆری ژماره‌ی ته‌واو (integer) پێناسه‌ كراوه‌ كه‌چی له‌ هێڵی دووه‌م نرخه‌كه‌ی گۆڕاوه‌ بۆ ژمارەی کەرت(Float point number). به‌لام له‌ جاڤاسكریپت زۆر ئاسایی كارده‌كات له‌به‌ر ئه‌وه‌ی جاڤاسكریپت جۆری ژماره‌ی ته‌واوی نیه‌ به‌ڵكو هه‌موو ژماره‌كان جۆریان ژماره‌ی كه‌رته‌. هه‌رچه‌نده‌ نووسینی كۆدێكی هاوشێوه‌ له‌ جاڤاسكریپت ئاسایه‌ به‌لام بۆ باشینەسازی له‌ V8 پێچه‌وانه‌یه‌.

let operand = 3;
function square() {
return operand * operand;
}

// Bangkirdnî bo yekem ca bê başînesazkirdin
square();
// Çalakirdnî başînesazî V8 paşan dûbare bangkirdnî fenkişnî square

%OptimizeFunctionOnNextCall(square);
square();

به‌ به‌كارهێنانی ئه‌و كۆده‌ی سه‌ره‌وه‌ (پەڕگە file)ـێک دروست بكه‌، پاشان له‌ ڕێگای فرمانی (Command) کاری پێ بكه‌

# node --allow-natives-syntax --trace_opt --trace_deopt myfile.js

سه‌رنجی نیشانی allow-natives-syntax بده‌.

ئه‌نجام:

 [deoptimize context: c39daf14679]
 [optimizing: square / c39dafca921 - took 1.900, 0.851, 0.000 ms]

ده‌بینین كه‌ V8 هیچ كێشه‌یه‌كی نیه‌ له‌ باشینه‌سازكردنی پابەندییsquare ئه‌م كۆده‌ی خواراوه‌ زۆر بكه‌و دووباره‌ كاری پێ بكه‌وه‌.

%OptimizeFunctionOnNextCall(square);
operand = 3.01;
square();

ئه‌نجام:

**** DEOPT: square at bailout #2, address 0x0, frame size 8
 [deoptimizing: begin 0x2493d0fca8d9 square @2]
 ...
 [deoptimizing: end 0x2493d0fca8d9 square => node=3, pc=0x29edb8164b46, state=NO_REGISTERS, alignment=no padding, took 0.033 ms]
 [removing optimized code for: square]

ئه‌مه‌ ڕاپۆرتێكی درێژه‌ له‌ سه‌ر ئه‌وه‌ی كه‌ V8 پاش باشینه‌سازكردنی پابەندیی square دووباره‌ ناچار بووه‌ به‌ لابردنی، له‌به‌ر ئه‌وه‌ی جۆری گۆڕاوه‌كه‌مان گۆڕی.

بەم شێوەیە باشتره‌ ده‌ستكاری جۆری گۆڕاوه‌كان نه‌كه‌ین. له‌ داهاتوو دا چ جۆرێكیان بۆ داده‌نێین باشتره‌ له‌ ئێستادا به‌هه‌مان جۆر پێناسیان بكه‌ین.