በ10 የፕሮግራም አወጣጥ ቋንቋዎች የአውታረ መረብ ነጂ አፈፃፀም ንፅፅር

የጀርመን ዩኒቨርሲቲዎች የተመራማሪዎች ቡድን ታትሟል ውጤቶቹ эksperymentaበዚህ ጊዜ 10 የተለያዩ የፕሮግራም አወጣጥ ቋንቋዎች ለ 10 ጊጋቢት ኢንቴል Ixgbe (X5xx) የኔትወርክ ካርዶች 1000 የተለመዱ ሾፌሮች ተዘጋጅተዋል። አሽከርካሪው በተጠቃሚ ቦታ ላይ ይሰራል እና በC፣ Rust፣ Go፣ C#፣ Java፣ OCaml፣ Haskell፣ Swift፣ JavaScript እና Python ውስጥ ይተገበራል። ኮዱን በሚጽፉበት ጊዜ ትኩረቱ የእያንዳንዱን ቋንቋ ባህሪያት ግምት ውስጥ በማስገባት ከፍተኛውን አፈፃፀም በማሳካት ላይ ነበር. በተግባራዊነት ፣ ሁሉም አማራጮች ተመሳሳይ ናቸው እና በግምት XNUMX የኮድ መስመሮችን ያቀፉ ናቸው። የፕሮጀክት ስኬቶች ስርጭት በ BSD ፍቃድ.

የነጂው የዝገት ስሪት በአፈጻጸም ከማጣቀሻ C ነጂ ጋር በጣም የቀረበ ነበር። በአንድ ነጠላ የመላክ ብሎኮች 32 ፓኬቶች ፣ የዝገቱ ሹፌር ትንሽ ዘግይቷል ፣ ግን በአንድ ብሎክ ከ 32 ፓኬቶች በላይ ባሉ ሙከራዎች ፣ በተግባር ከሲ ሾፌር ፍጥነት አይለይም እና በሂደቱ ደረጃ አፈፃፀም አሳይቷል ። በሴኮንድ 28 ሚሊዮን ፓኬቶች በ Xeon CPU E3-1230 v2 3.3 GHz አገልጋይ ላይ።

በ10 የፕሮግራም አወጣጥ ቋንቋዎች የአውታረ መረብ ነጂ አፈፃፀም ንፅፅር

በአፈፃፀሙ የሚቀጥለው ቦታ በGo እና C # አሽከርካሪዎች ተይዟል ፣ ይህም በጣም ቅርብ የሆነ ውጤት አሳይቷል (የጎ ሹፌሩ በፈተናዎች እስከ 16 ፓኬጆችን ያካተተ ብሎኮችን በማሸነፍ እና ከ 16 በላይ ፓኬጆችን በያዙ ሙከራዎች በትንሹ መሸነፍ ጀመረ ። አግድ)። በአንድ ብሎክ በ256 ፓኬቶች፣ የC# አሽከርካሪው ከፍተኛ አፈጻጸም በግምት 28Mpps፣ እና ለጎ ሾፌሮች በግምት 25Mpps ነበር።

በመቀጠል፣ በተመጣጣኝ ቅርብ ውጤቶች፣ ከዚያም አሽከርካሪዎች ለ
ቀደም ሲል ከታሰቡት አማራጮች ጀርባ በግልጽ የሚታዩ እና በሰከንድ 12 ሚሊዮን ፓኬቶችን ማሸነፍ ያልቻሉ Java፣ OCaml እና Haskell። በስዊፍት እና ጃቫስክሪፕት ላይ የተመሰረቱ አሽከርካሪዎች በሴኮንድ በ5 ሚሊዮን ፓኬቶች ደረጃ ዥረቶችን ማካሄድ የቻሉ የበለጠ የኋላ ታሪክ አሳይተዋል።

በፓይዘን ቋንቋ ያለው አሽከርካሪ በሴኮንድ 0.14 ሚሊዮን ፓኬቶችን ብቻ ማካሄድ የቻለውን ደረጃውን ዘጋው። የፓይዘን አተገባበር የተርጓሚዎችን ፍጥነት ያለ JIT እና ያለ ልዩ ማመቻቸት ለመገምገም ጥቅም ላይ ውሏል (ኮዱ የተካሄደው CPython 3.7 በመጠቀም ነው እና ከPyPy ጋር ተኳሃኝ አልነበረም፣ ነገር ግን የውሂብ አወቃቀሮችን ማመቻቸት አፈፃፀሙን በ10 ጊዜ ያህል እንደሚያሻሽል ተጠቅሷል።

በተጨማሪም የቆይታ ሙከራዎች ተካሂደዋል, ይህም የማቆያውን ውጤታማነት እና የቆሻሻ አሰባሳቢውን ተፅእኖ ያሳያሉ. ፈተናው ከታወቀ የመላኪያ ጊዜ ጋር ሲነጻጸር እያንዳንዱ ፓኬት በአሽከርካሪው ከተመራ በኋላ መዘግየትን ለካ። መሪዎቹ አሁንም የሲ እና የዝገት አሽከርካሪዎች ነበሩ፣ ውጤታቸውም በሴኮንድ ለ1 ሚሊየን ፓኬቶች ፍሰት የማይለይ ነበር (ወደ 20 µs)። በጎ ቋንቋ ያለው ሹፌር በጥሩ ሁኔታ ሠርቷል፣ ይህም ከመሪዎቹ በስተጀርባ ትንሽ ብቻ የነበረ እና እንዲሁም በ20 µ ሴ ደረጃ ላይ ነበር። የC# ሹፌሩ ወደ 50µ ሴ ገደማ መዘግየቶችን አሳይቷል።
በጃቫ ስክሪፕት እና ጃቫ ላይ የተመሰረቱ አሽከርካሪዎች ትልቁን መዘግየቶች አሳይተዋል (ከ300 µ ሰ በላይ መዘግየቶች)።

በ10 የፕሮግራም አወጣጥ ቋንቋዎች የአውታረ መረብ ነጂ አፈፃፀም ንፅፅር

ጥናቱ የተካሄደው ከ C በላይ በሆኑ ቋንቋዎች አሽከርካሪዎችን እና የስርዓተ ክወና ክፍሎችን የማዳበር እድልን ለመገምገም ነው. በአሁኑ ጊዜ ከ 39 የሊኑክስ ማህደረ ትውስታ ችግሮች 40 ቱ ከአሽከርካሪ ጋር የተገናኙ ናቸው ፣ ስለሆነም ደህንነቱ የተጠበቀ ቋንቋ የመጠቀም እና ሾፌሮችን ከከርነል እና ወደ ተጠቃሚ ቦታ የማስገባት ጉዳዮች ጠቃሚ ሆኖ ይቆይ እና አምራቾች ቀድሞውኑ በዚህ አቅጣጫ በንቃት እየሞከሩ ነው (ለምሳሌ ፣ Google ለ OS የ TCP ቁልል አዘጋጅቷል። ፉሺያ በ Go, CloudFlare ተፈጥሯል በሩስት ውስጥ የQUIC ፕሮቶኮል መተግበር አፕል የ TCP ቁልል በተንቀሳቃሽ መሳሪያዎች ላይ ወደ የተጠቃሚ ቦታ አንቀሳቅሷል)።

በተከናወነው ሥራ ውስጥ, የዝገት ቋንቋ ለአሽከርካሪዎች እድገት ምርጥ እጩ ነው የሚል መደምደሚያ ላይ ደርሷል. በሩስት የቀረቡት ባህሪያት በዝቅተኛ ደረጃ የማስታወስ ችሎታ አያያዝ ምክንያት የሚነሱትን ችግሮች እንዲያስወግዱ ያስችሉዎታል, ከ C-ቋንቋ አሽከርካሪዎች ጋር ሲነፃፀር ከ 2% -10% የሚደርስ የአፈፃፀም ቅጣት ዋጋ. Go እና C # በቆሻሻ አሰባሳቢው ምክንያት የሚፈጠረውን የንዑስ ሚሊሰከንድ መዘግየት ተቀባይነት ባለው ሁኔታ ውስጥ የስርዓት ክፍሎችን ለመገንባት ተስማሚ ሆነው ተገኝተዋል።

ምንጭ: opennet.ru

አስተያየት ያክሉ