د 10 پروګرامینګ ژبو نسخو کې د شبکې چلوونکي فعالیت پرتله کول

د آلمان د پوهنتونونو د څیړونکو یوه ډله خپور شوی پایلې اکسیپریمینټا، چې په جریان کې د 10-ګیګابایټ Intel Ixgbe (X10xx) شبکې کارتونو لپاره د معیاري ډرایور 5 نسخې په مختلف پروګرامینګ ژبو کې رامینځته شوي. ډرایور د کارونکي ځای کې چلیږي او په C، Rust، Go، C#، Java، OCaml، Haskell، Swift، JavaScript او Python کې پلي کیږي. کله چې د کوډ لیکلو، اصلي تمرکز د هرې ژبې ځانګړتیاوې په پام کې نیولو سره، د غوره ممکنه فعالیت ترالسه کولو باندې و. ټول اختیارونه په فعالیت کې یو شان دي او د کوډ شاوخوا 1000 لینونه لري. د پروژې پرمختګونه خپراوی د BSD جواز لاندې.

د ډرایور زنګ نسخه په C ژبه کې د حوالې ډرایور ته په فعالیت کې خورا نږدې و. د 32 کڅوړو بلاکونو په ورته وخت کې لیږلو سره د بار لاندې ، د زنګ چلونکی یو څه شاته و ، مګر په هر بلاک کې له 32 څخه ډیر کڅوړو سره ازموینې کې ، سرعت په عملي ډول د C ډرایور څخه توپیر نه درلود او د 28 ملیون پروسس کولو په کچه یې فعالیت ښودلی. د Xeon CPU E3-1230 v2 3.3 GHz سره په سرور کې په هر ثانیه کې کڅوړې.

د 10 پروګرامینګ ژبو نسخو کې د شبکې چلوونکي فعالیت پرتله کول

د فعالیت په شرایطو کې راتلونکی ځای په Go او C# ژبو کې د چلوونکو لخوا نیول شوی و، کوم چې خورا نږدې پایلې ښودلې (د Go ډرایور تر 16 پاکټونو پورې په ازموینو کې وګټل، او د 16 څخه ډیرو کڅوړو سره په ازموینو کې یو څه له لاسه ورکول پیل کړل. په یوه بلاک کې). په هر بلاک کې د 256 پاکټونو سره، د C# ډرایور لوړ فعالیت په هره ثانیه کې نږدې 28 ملیون پاکټونه وو، او د Go ډرایور نږدې 25 ملیون پاکټونه په هر ثانیه کې و.

بل، د کافي نږدې پایلو سره، د دې لپاره چلوونکي وو
جاوا، OCaml او هاسکل، کوم چې دمخه په پام کې نیول شوي انتخابونو څخه وروسته پاتې وو او نشي کولی په هر ثانیه کې 12 ملیون پاکټونه بریالي کړي. سویفټ او جاواسکریپټ ډرایورانو حتی ډیر ځنډ وښوده ، د دې وړتیا لري چې په هره ثانیه کې د 5 ملیون پاکټونو په کچه جریانونه پروسس کړي.

لوړ رتبه د Python ډرایور لخوا بشپړه شوې، کوم چې په هره ثانیه کې یوازې 0.14 ملیون پاکټونه پروسس کولو توان درلود. د Python تطبیق د JIT پرته او پرته له کوم ځانګړي اصلاح کولو څخه د ژباړونکو سرعت ارزولو لپاره کارول شوی و (کوډ د CPython 3.7 په کارولو سره اجرا شوی و او د PyPy سره مطابقت نه درلود، مګر دا یادونه وشوه چې د ډیټا ذخیره کولو جوړښتونو اصلاح کولی شي شاوخوا 10 ځله فعالیت ښه کړي. ).

سربیره پردې، د ځنډولو ازموینې ترسره شوې ترڅو د بفرینګ اغیزې او د کثافاتو راټولونکي اغیز وښیې. ازموینې د دقیق وخت په پرتله د هر پیکټ له لیږلو وروسته ځنډ اندازه کړې. مشران لا تر اوسه د C او Rust چلوونکي وو، چې پایلې یې په هر ثانیه کې د 1 ملیون پاکټونو جریان (نږدې 20 µs) لپاره په عملي توګه د توپیر وړ ندي. د Go ډرایور ښه فعالیت وکړ، یوازې د مشرانو څخه یو څه شاته و او د 20 µs په کچه پاتې شو. د C# ډرایور نږدې 50 µs ځنډ وښود.
ترټولو اوږد ځنډ د جاواسکریپټ او جاوا ډرایورانو لخوا ښودل شوی (له 300 µs څخه ډیر ځنډونه).

د 10 پروګرامینګ ژبو نسخو کې د شبکې چلوونکي فعالیت پرتله کول

دا څیړنه د C په پرتله د لوړې کچې ژبو کې د چلوونکو او عملیاتي سیسټم اجزاو رامینځته کولو احتمال ارزولو لپاره ترسره شوې. اوس مهال، په لینوکس کې د حافظې له 39 څخه 40 ستونزې د چلوونکو پورې اړه لري، نو د ډیرې خوندي ژبې کارولو مسلې او د ډریورانو د کرنل څخه بهر او د کاروونکي ځای ته لیږدول. اړونده پاتې شي او جوړونکي لا دمخه په دې لار کې په فعاله توګه تجربه کوي (د مثال په توګه، ګوګل د OS لپاره د TCP سټیک رامینځته کړی فیوسیا په Go ژبه کې، CloudFlare شرکت جوړ شوی په Rust کې د QUIC پروتوکول پلي کول، ایپل په ګرځنده وسیلو کې د TCP سټیک د کارونکي ځای ته لیږدولی دی).

د کار په جریان کې، دا پایله وشوه چې د زنګ ژبه د موټر چلوونکي پراختیا لپاره غوره نوماند دی. د زنګ ظرفیتونه د C ډرایورانو په پرتله د نږدې 2٪ څخه تر 10٪ پورې د فعالیت ضایع کیدو په قیمت کې د ټیټ کچې حافظې مدیریت پورې اړوند ستونزې له مینځه وړي. Go او C# هم په داسې شرایطو کې د سیسټم اجزاو رامینځته کولو لپاره مناسب ګڼل کیږي چیرې چې د کثافاتو راټولولو له امله د فرعي ملی ثانوي ځنډ د منلو وړ وي.

سرچینه: opennet.ru

Add a comment