និមិត្តសញ្ញា Zephyrnet

តើគំរូផ្លូវចិត្តរបស់អ្នកនៃបំពង់ Bash ខុសទេ?

កាលបរិច្ឆេទ:

[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.

spot_img

បញ្ញាចុងក្រោយ

spot_img