áá»á¬áááºááá¹áááá¯ááºáá»á¬ážá០áá¯áá±áá®áá»á¬ážá¡ááœá²á·
áááá¯ááºáá¬á Rust áá¬ážááŸááºážááẠC áá¬áá¬á áá¬ážááŸá ááá¯ážáá¬ážáá±á¬ááºážááŸááºáá°ááŸáá·áº á¡ááœááºáá®ážáááºá áœá¬ á áœááºážáá±á¬ááºááá¯ááºáá²á·áááºá á¡áá¯á¶áž 32 áá¯ááºááᯠáááŒáá¯ááºááẠáá±ážááá¯á·ááŒááºážááŸáá·áºá¡áá° Rust driver ááẠá¡áááºážááẠáá±á¬ááºáá»ááœá¬ážáá±á¬áºáááºáž áá áºáá¯á¶ážáá»áŸáẠ32 packet áá»á±á¬áºááŒáá·áº á ááºážáááºáá¬ááœáẠááŒááºááŸá¯ááºážááŸá¬ áááºááœá±á·ááœáẠC driver ááŸáá·áº áááœá¬ááŒá¬ážáá² áá¯ááºáá±á¬ááºáá»áẠ28 million á¡ááá·áºááœáẠá áœááºážáá±á¬ááºáááºááᯠááŒááá²á·áááºá Xeon CPU E3-1230 v2 3.3 GHz ááŸááá±á¬ áá¬áá¬ááœáẠáá áºá áá¹ááá·áºáá»áŸáẠáááºáááºáá»á¬ážá
á áœááºážáá±á¬ááºáááºááŸáá·áºáááºáááºááá·áºáá±á¬ááºáááºáááºáááºááᯠGo ááŸáá·áº C# áá¬áá¬á áá¬ážáá»á¬ážááœáẠáá¬ááºáá±á¬ááºážáá»á¬ážá ááááºážááá¯ááºáá¬ážááŒá®ážá á¡áá±á¬áºá¡áááºáá®ážá ááºáá±á¬ááááºáá»á¬ážááŒááá²á·ááẠ(Go driver ááẠá ááºážáááºááŸá¯ááœáẠ16 packet á¡áá áá¯á¶ážáá»á¬ážááŒáá·áº á¡ááá¯ááºááá²á·ááŒá®áž 16 packet áá»á±á¬áºááŒáá·áº á ááºážáááºááŸá¯áá»á¬ážááœáẠá¡áááºážááẠáá¯á¶ážááŸá¯á¶ážááœá¬ážááẠááá±á¬ááºáá áºáá¯ááœááº)á áá áºáá¯á¶ážáá»áŸáẠ256 packets ááŒáá·áº C# driver á á¡ááœááºá¡ááááºá áœááºážáá±á¬ááºáááºááŸá¬ áá áºá áá¹ááá·áºáá»áŸáẠpackets 28 áááºážááá·áºááŸáááŒá®áž Go driver ááẠáá áºá áá¹ááá·áºáá»áŸáẠpackets 25 áááºážááá·áºááŸááááºá
áá±á¬ááºáá
áºáá¯ááá±á¬á· á¡áá±á¬áºáá±áž áá®ážá
ááºáá²á· ááááºááœá±áá²á· áá¬ááºáá±á¬ááºážááœá±á¡ááœááºáá² ááŒá
áºáá«áááºá
Javaá OCaml ááŸáá·áº Haskell ááá¯á·ááẠááááºáááºááŸááºáá¬ážáá±á¬ ááœá±ážáá»ááºááŸá¯áá»á¬ážáá±á¬ááºááœáẠáááááá¬áᬠáá±á¬ááºáá»áá±ááŒá®áž áá
áºá
áá¹ááá·áºáá»áŸáẠáááºááẠáá áááºážááᯠááá»á±á¬áºááœáŸá¬ážááá¯ááºáá±á Swift ááŸáá·áº JavaScript driver áá»á¬ážááẠáá
áºá
áá¹ááá·áºáá»áŸáẠpacket 12 áááºážá¡ááá·áºááœáẠstreams áá»á¬ážááᯠá
á®áá¶áá±á¬ááºááœááºááá¯ááºááŒááºážááŸá¬ ááá¯ááŒá®ážáá¬ážáá±á¬ áá±á¬ááºáá»ááŸá¯ááᯠááŒááá²á·áááºá
Python driver á០ááááºáááºážá¡ááá·áºááᯠááŒá®ážááŒá±á¬ááºáá²á·ááŒá®ážá áá áºá áá¹ááá·áºáá»áŸáẠ0.14 áááºáž packets áá»á¬ážááá¯áᬠáá¯ááºáá±á¬ááºááá¯ááºáá²á·áááºá Python á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠJIT ááá«áá² á áá¬ážááŒááºáá»á¬ážá á¡ááŒááºááŸá¯ááºážááᯠá¡áá²ááŒááºáááºááŸáá·áº áááá»áá±á¬ ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážáááŸááá² (áá¯ááºááᯠCPython 3.7 ááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºáá²á·ááŒá®áž PyPy ááŸáá·áº ááá¯ááºáá®ááŸá¯áááŸááá«á ááá¯á·áá±á¬áº áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯áááºáá±á¬ááºáá¯á¶áá»á¬ážááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááẠá áœááºážáá±á¬ááºáááºááᯠ10 áááá·áº ááá¯ážáááºá á±ááá¯ááºááŒá±á¬ááºáž ááŸááºáá¬ážáá¬ážáááºá )
ááá¯á·á¡ááŒáẠáá¯á¶á·ááŒááºááŸá¯ááááá±á¬ááºááŸá¯ááŸáá·áº á¡ááŸáá¯ááºá
á¯áá±á¬ááºážáá°áá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááá¯ááŒáááẠlatency á
ááºážáááºááŸá¯áá»á¬ážááᯠááŒá¯áá¯ááºáá²á·áááºá áááºáá±á·ááºá»áá
áºáá¯á
á®ááᯠáá¬ááºáá±á¬ááºážá áá±ážááá¯á·ááá¯ááºááá·áºá¡áá»áááºá¡ááá¡áá»ááŸáá·áº ááŸáá¯ááºážááŸááºááŒá®ážáá±á¬áẠá
ááºážáááºááŸá¯ááẠááŒá¬ááŒáá·áºáá»áááºááᯠááá¯ááºážáá¬áááºá áá±á«ááºážáá±á¬ááºáá»á¬ážááẠC ááŸáá·áº Rust drivers áá»á¬ážááŒá
áºáá±áá²ááŒá
áºááŒá®ážá áááºážááááºáá»á¬ážááẠáá
áºá
áá¹ááá·áºáá»áŸáẠpackets 1 áááºáž (ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº 20 µs) á
á®ážáááºážááŸá¯á¡ááœáẠáááºááœá±á·áá»áá» ááœá²ááŒá¬ážááááá±á Go driver ááẠáá±á«ááºážáá±á¬ááºáá»á¬ážááá±á¬ááºááœáẠá¡áááºážáááºáá¬ááŸááᬠ20 µs á¡ááá·áºááœáẠáá»ááºááŸááá±áá«áááºá C# driver ááẠááá·áºááŸááºážááŒá± 50 µs ááŸá±á¬áá·áºááŸá±ážááŸá¯ááᯠááŒááá²á·áááºá
á¡ááŸááºááŒá¬áá¯á¶ážááŸá±á¬áá·áºááŸá±ážááŸá¯áá»á¬ážááᯠJavaScript ááŸáá·áº Java áááá¯ááºáá¬áá»á¬áž (300 µs áááºááá¯áá±á¬ latencies) ááŸááŒááá²á·áááºá
á¡ááá¯áá«áá±á·áá¬ááŸá¯ááᯠC áááºá¡ááá·áºááŒáá·áºáá±á¬áá¬áá¬á
áá¬ážáá»á¬ážááŒáá·áº drivers áá»á¬ážááŸáá·áº operating system á¡á
áááºá¡ááá¯ááºážáá»á¬ážááá¯áá®ááœááºááá¯ááºááŒá±ááá¯á¡áá²ááŒááºáááºááŒá¯áá¯ááºáá²á·áááºá áááºááŸáááœáẠLinux ááœáẠmemory ááŒá¿áᬠ39 ááœáẠ40 ááẠdriver áá»á¬ážááŸáá·áºáááºá
ááºáá±áá±á¬ááŒá±á¬áá·áº ááá¯ááá¯áá¯á¶ááŒá¯á¶áá±á¬áá¬áá¬á
áá¬ážááá¯á¡áá¯á¶ážááŒá¯áᬠkernel á០driver áá»á¬ážááá¯ááœáŸá±á·áᬠuser space ááá¯á·ááŒá±á¬ááºážááœáŸá±á·ááŒááºážááá¯ááºáá¬ááŒá¿áá¬áá»á¬áž
á¡áá¯ááºááœááºá Rust áá¬áá¬á áá¬ážááẠáá¬ááºáá±á¬ááºážááœá¶á·ááŒáá¯ážááŸá¯á¡ááœáẠá¡áá±á¬ááºážáá¯á¶áž ááá¯ááºá á¬ážááŸááºáá±á¬ááºážááŒá áºááŒá±á¬ááºáž áá±á¬ááºáá»ááºáá»áá²á·áááºá Rust á á áœááºážáá±á¬ááºáááºáá»á¬ážááẠC driver áá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº 2% á០10% á¡áá á áœááºážáá±á¬ááºááẠáá¯á¶ážááŸá¯á¶ážááŸá¯áááºááá¯ážááŒáá·áº á¡ááá·áºáááá·áºááŸááºáá¬ááºá á®áá¶ááá·áºááœá²ááŸá¯ááŸáá·áº áááºá ááºáá±áá±á¬ ááŒá¿áá¬áá»á¬ážááᯠáááºááŸá¬ážáá±ážáá«áááºá Go ááŸáá·áº C# ááᯠá¡ááŸáá¯ááºá á¯áá±á¬ááºážááŒááºážááŒá±á¬áá·áº áááºáá¶ááá¯ááºáá±á¬ á¡ááŒá±á¡áá±áá»á¬ážááœáẠá áá áºá¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáááºáá®ážáááºá¡ááœááºáááºáž ááá·áºáá»á±á¬áºáááºáᯠáá°ááá«áááºá
source: opennet.ru