Logo Zephyrnet

Ṣe Awoṣe Ọpọlọ Rẹ Ti Awọn Pipeline Bash Ti ko tọ?

ọjọ:

[Michael Lynch] konge ipo ajeji kan. Kini idi ti o n ṣajọpọ lẹhinna nṣiṣẹ eto rẹ fẹrẹẹ 10x Yara ju ju o kan ṣiṣe awọn eto nipa ara? [Michael] sare sinu ọran yii lakoko ti o ṣe ipilẹ iṣẹ akanṣe siseto kan, sọ di mimọ si awọn ohun pataki rẹ fun atunwi ati itupalẹ, ati ṣe awari o ṣe afihan awoṣe ọpọlọ ti ko tọ ti bii awọn opo gigun ti bash ṣiṣẹ.

Eyi ni ipo naa. Ohun akọkọ [Michael]'s pared-down eto ṣe ni bẹrẹ aago kan. Lẹhinna o kan ka ati ka diẹ ninu awọn baiti lati stdin, lẹhinna tẹ jade bi o ti pẹ to fun iyẹn lati ṣẹlẹ. Nigbati o ba n ṣiṣẹ eto idanwo ni ọna atẹle, o gba to awọn iṣẹju-aaya 13.

$ echo '00010203040506070809' | xxd -r -p | zig build run -Doptimize=ReleaseFast
bytes: 10
execution time: 13.549µs

Nigbati o ba n ṣiṣẹ eto (ti a ti ṣajọ tẹlẹ) taara, akoko ipaniyan swells si 162 microseconds.

$ echo '00010203040506070809' | xxd -r -p | ./zig-out/bin/count-bytes
bytes: 10
execution time: 162.195µs

Lẹẹkansi, awọn nikan ni iyato laarin zig build run ati ./zig-out/bin/count-bytes ni wipe akọkọ compiles awọn koodu, ki o si lẹsẹkẹsẹ nṣiṣẹ o. Awọn keji nìkan nṣiṣẹ awọn compiled eto.

Bii o ṣe le ṣafikun igbesẹ akojọpọ afikun dinku akoko ipaniyan? Yipada pe awoṣe ọpọlọ [Michael] ti bii bash pipelines ṣe jẹ aṣiṣe, ati pe o ṣe iṣẹ nla ti nse bi wọn ti n ṣiṣẹ gangan, ati idi ti o fa ihuwasi ajeji naa o riran.

Ni kukuru, awọn aṣẹ ni opo gigun ti epo kan ko ṣe ifilọlẹ lẹsẹsẹ. Gbogbo wọn ti ṣe ifilọlẹ ni akoko kanna ati ṣiṣe ni afiwe. Iyẹn tumọ si pe nigba ṣiṣe taara, eto baiti-counter [Michael] ṣe ifilọlẹ lẹsẹkẹsẹ. Nigbana ni o duro ni ayika ṣe ohunkohun Elo fun nipa 150 microseconds nigba ti echo '00010203040506070809' | xxd -r -p apakan ti opo gigun ti epo ni ayika lati jiṣẹ data rẹ fun eto lati ka. Eyi ni ibiti akoko ipaniyan afikun ba wa nigbati o nṣiṣẹ ẹya ti a ṣajọ tẹlẹ.

Nitorinaa kilode ti iṣakojọpọ rẹ ni akọkọ nṣiṣẹ ni iyara? Kanna ipilẹ idi: nigbati awọn zig build run pipaṣẹ bẹrẹ, o lo akoko diẹ lati ṣajọ eto naa ni akọkọ. Lẹhinna nigbati eto ti kojọpọ ti ṣe ifilọlẹ gangan (ati bẹrẹ aago ipaniyan rẹ), data titẹ sii lati opo gigun ti epo ti ṣetan tẹlẹ. Nitorinaa, eto tuntun ti o ṣajọ ṣiṣẹ ni akoko diẹ nitori ko joko ni ayika nduro fun data lati iṣaaju ni opo gigun ti epo lati wa.

O jẹ iwo ti o nifẹ si bi awọn opo gigun ti bash ṣe n ṣiṣẹ gangan labẹ hood, ati pe a ni inudidun pẹlu alaye [Micheal] fi sinu gbogbo irin-ajo ati alaye naa. Laipẹ tabi ya, awọn alaye bii irugbin na soke ati fa diẹ ninu awọn oju oju lati gbe, bii olumulo ti o ṣe awari Awọn ọran eti wahala nipa awọn aye ni awọn aṣẹ ssh.

iranran_img

Titun oye

iranran_img