[Michael Lynch] បានជួបប្រទះស្ថានភាពចម្លែកមួយ។ ហេតុអ្វីបានជាការចងក្រងបន្ទាប់មកដំណើរការកម្មវិធីរបស់គាត់ជិត 10 ដង លឿន ជាងគ្រាន់តែដំណើរការកម្មវិធីដោយខ្លួនឯង? [Michael] បានរត់ចូលទៅក្នុងបញ្ហានេះ ខណៈពេលដែលកំពុងធ្វើការវាយតម្លៃគម្រោងការសរសេរកម្មវិធី ដោយបានរៀបរាប់ពីចំណុចសំខាន់របស់វាសម្រាប់ការធ្វើឡើងវិញ និងការវិភាគ ហើយបានរកឃើញថាវាបានគូសបញ្ជាក់ពីគំរូផ្លូវចិត្តមិនត្រឹមត្រូវនៃរបៀបដែលបំពង់បង្ហូរឧស្ម័នដំណើរការ។
នេះជាស្ថានភាព។ រឿងដំបូងដែល [ម៉ៃឃើល] ធ្វើគឺកម្មវិធីកំណត់ម៉ោង។ បន្ទាប់មកវាគ្រាន់តែអាន និងរាប់បៃមួយចំនួនពី stdin
បន្ទាប់មកបោះពុម្ពចេញថាតើវាត្រូវចំណាយពេលប៉ុន្មានដើម្បីឱ្យវាកើតឡើង។ នៅពេលដំណើរការកម្មវិធីសាកល្បងតាមវិធីខាងក្រោម វាត្រូវចំណាយពេលប្រហែល 13 មីក្រូវិនាទី។
$ echo '00010203040506070809' | xxd -r -p | zig build run -Doptimize=ReleaseFast bytes: 10 execution time: 13.549µs
នៅពេលដំណើរការកម្មវិធី (ចងក្រងរួចហើយ) ដោយផ្ទាល់ ពេលវេលាប្រតិបត្តិនឹងកើនឡើងដល់ 162 មីក្រូវិនាទី។
$ echo '00010203040506070809' | xxd -r -p | ./zig-out/bin/count-bytes bytes: 10 execution time: 162.195µs
ជាថ្មីម្តងទៀតភាពខុសគ្នាតែមួយគត់រវាង zig build run
និង ./zig-out/bin/count-bytes
គឺថាដំបូងគេចងក្រងកូដ បន្ទាប់មកដំណើរការវាភ្លាមៗ។ ទីពីរគ្រាន់តែដំណើរការកម្មវិធីដែលបានចងក្រង។
របៀបបន្ថែមជំហានចងក្រងបន្ថែម ថយចុះ ពេលវេលាប្រតិបត្តិ? ប្រែថាគំរូផ្លូវចិត្តរបស់ [ម៉ៃឃើល] អំពីរបៀបដែលបំពង់បង្ហូរប្រេងដំណើរការមិនត្រឹមត្រូវ ហើយគាត់ធ្វើបានល្អណាស់។ ពន្យល់ពីរបៀបដែលពួកគេពិតជាដំណើរការ និងមូលហេតុដែលបណ្តាលឱ្យមានអាកប្បកិរិយាចម្លែក គាត់កំពុងឃើញ។
សរុបមក ពាក្យបញ្ជានៅក្នុងបំពង់បង្ហូរប្រេង bash មិនត្រូវបានដាក់ឱ្យដំណើរការតាមលំដាប់លំដោយទេ។ ពួកវាទាំងអស់ត្រូវបានដាក់ឱ្យដំណើរការក្នុងពេលតែមួយ ហើយប្រតិបត្តិស្របគ្នា។ នោះមានន័យថានៅពេលដំណើរការដោយផ្ទាល់ កម្មវិធីរាប់បៃរបស់ [Michael] បានចាប់ផ្តើមភ្លាមៗ។ បន្ទាប់មកវារង់ចាំជុំវិញការធ្វើអ្វីច្រើនប្រហែល 150 មីក្រូវិនាទីខណៈពេលដែលវា។ echo '00010203040506070809' | xxd -r -p
ផ្នែកមួយនៃបំពង់បង្ហូរប្រេងបានទៅដល់ជុំវិញការបញ្ជូនទិន្នន័យរបស់វាសម្រាប់កម្មវិធីដើម្បីអាន។ នេះគឺជាកន្លែងដែលពេលវេលាប្រតិបត្តិបន្ថែមកើតឡើងនៅពេលដំណើរការកំណែដែលបានចងក្រងរួចហើយ។
ដូច្នេះហេតុអ្វីបានជាការចងក្រងវាដំបូងដំណើរការលឿនជាង? ហេតុផលមូលដ្ឋានដូចគ្នា៖ នៅពេល zig build run
ពាក្យបញ្ជាចាប់ផ្តើម វាចំណាយពេលបន្តិចក្នុងការចងក្រងកម្មវិធីជាមុនសិន។ បន្ទាប់មកនៅពេលដែលកម្មវិធីចងក្រងពិតជាត្រូវបានចាប់ផ្តើម (ហើយចាប់ផ្តើមកម្មវិធីកំណត់ពេលវេលាប្រតិបត្តិរបស់វា) ទិន្នន័យបញ្ចូលពីបំពង់បង្ហូរប្រេង bash គឺរួចរាល់ហើយ។ ដូច្នេះ កម្មវិធីដែលបានចងក្រងថ្មីៗដំណើរការក្នុងរយៈពេលតិចជាងមុន ព្រោះវាមិនអង្គុយរង់ចាំទិន្នន័យពីដើមនៅក្នុងបំពង់បង្ហូរដើម្បីមាន។
វាជាការគួរឱ្យចាប់អារម្មណ៍មួយមើលពីរបៀបដែលបំពង់បង្ហូរឧស្ម័នពិតជាដំណើរការនៅក្រោមក្រណាត់ ហើយយើងរីករាយជាមួយនឹងព័ត៌មានលម្អិតដែល [Micheal] ដាក់ចូលទៅក្នុងដំណើរ និងការពន្យល់ទាំងមូល។ មិនយូរមិនឆាប់ ព័ត៌មានលម្អិតដូចជាការកាត់នេះឡើង ហើយធ្វើឱ្យចិញ្ចើមឡើងខ្ពស់ ដូចជាអ្នកប្រើប្រាស់ដែលបានរកឃើញ ករណីគែមមានបញ្ហាទាក់ទងនឹងចន្លោះនៅក្នុងពាក្យបញ្ជា ssh.
- SEO ដែលដំណើរការដោយមាតិកា និងការចែកចាយ PR ។ ទទួលបានការពង្រីកថ្ងៃនេះ។
- PlatoData.Network Vertical Generative Ai. ផ្តល់អំណាចដល់ខ្លួនអ្នក។ ចូលប្រើទីនេះ។
- PlatoAiStream Web3 Intelligence ។ ចំណេះដឹងត្រូវបានពង្រីក។ ចូលប្រើទីនេះ។
- ផ្លាតូអេសជី។ កាបូន CleanTech, ថាមពល, បរិស្ថាន, ពន្លឺព្រះអាទិត្យ ការគ្រប់គ្រងកាកសំណល់។ ចូលប្រើទីនេះ។
- ផ្លាតូសុខភាព។ ជីវបច្ចេកវិទ្យា និង ភាពវៃឆ្លាត សាកល្បងគ្លីនិក។ ចូលប្រើទីនេះ។
- ប្រភព: https://hackaday.com/2024/03/28/is-your-mental-model-of-bash-pipelines-wrong/