مؤشر أي شيء مع أداة Linux القوية هذه

ملخص
Hyperfine هي أداة قياس القياس التي تدير الأوامر عدة مرات لمتوسطات دقيقة.
Hyperfine سهلة الاستخدام ويسمح بتصدير النتائج بتنسيقات Markdown أو JSON لمزيد من التحليل.
يمكنك استخدام Hyperfine لمقارنة كفاءة البرنامج ، وتحسين التعليمات البرمجية ، وأتمتة القياس.
إذا كنت بحاجة إلى معرفة مدى سرعة تشغيله ، فسيخبرك Hyperfine. هذه الأداة السهلة الاستخدام المتنوعة على Linux تأخذ كل الجهود من القياس.
ما هو Hyper -Fine؟
فرط هي أداة قياس معايير مفتوحة المصدر لـ Linux و MacOs و Windows. مثل الأمر الزمني ، الذي يتوفر في معظم التوزيعات والقذائف ، ستقيس Hyper -Fine مقدار الوقت الذي يستغرقه تشغيل البرنامج:
على السطح ، يقوم Hyper -Fine بنفس الوظيفة مثل الوقت ، مع إخراج أجمل. لكن الأداة لها العديد من المزايا ؛ Hyper -Fine:
يدير الأمر عدة مرات ، مما ينتج عن متوسطات أكثر دقة.
يمكن اختبار ومقارنة العديد من الأوامر في وقت واحد.
حسابات التخزين المؤقت ، القيم المتطرفة ، وتأثير قذيفة التفريخ على النتائج.
يمكن تصدير النتائج في تنسيقات تخفيض أو JSON لمزيد من التحليل.
يعد Hyper -Fine مفيدًا بشكل خاص عندما تكتب برامجك الخاصة. يمكنك تجربة التحسينات واختبارها باستخدام Hyperfine وتحديث الكود وفقًا لذلك. ولكن يمكنك أيضًا استخدامه للاختيار بين البرامج المختلفة ، مثل GREP مقابل RIPGREP على سبيل المثال:
كيفية تثبيت واستخدام Hyperfine
مكتوبة في Rust ، Hyper-Fine هو أمر محمول للغاية يأتي مع صفحات MAN وميزات خط الأوامر الحديثة مثل خيارات النموذج الطويل وإكمال علامة التبويب.

متعلق ب
لماذا يجب أن تتعلم الصدأ ، خاصة إذا كنت جديدًا في البرمجة
Rust هي واحدة من أحدث لغات البرمجة ، ويمكنها تغيير كيفية رؤية الكود.
تثبيت
تتوفر حزم Hyperfine للعديد من توزيعات Linux وغيرها من أنظمة التشغيل.
على Ubuntu ، يمكنك تثبيت Hyper -Fine من إصدار .deb ، على سبيل المثال
wget https://github.com/sharkdp/hyperfine/releases/download/v1.19.0/hyperfine_1.19.0_amd64.deb
sudo dpkg -i hyperfine_1.19.0_amd64.deb
تحقق من المشروع صفحة جيثب للحصول على أحدث إصدار في الهندسة المعمارية الخاصة بك.
في Fedora ، يمكنك استخدام DNF Package Manager لتثبيت Hyperfine بأمر بسيط:
dnf install hyperfine
على MacOS – أو نظام آخر يدعمه – يمكنك استخدام Homebrew:
brew install hyperfine
بالنسبة للأنظمة الأخرى ، تحقق من تفصيل المشروع تعليمات التثبيت.
الاستخدام الأساسي لفرط الدقة
يولد Fyerfine Subshell لتشغيل الأوامر التي تمررها. لا تحتاج إلى التفكير في هذا الأمر كثيرًا ، ولكن هذا يعني أنه يجب عليك تشغيل Fyry -Fine على النحو التالي:
hyperfine command-in-path
# OR
hyperfine /full/path/to/command
على وجه الخصوص ، هذا يعني أنه لا يمكنك فقط تشغيل Fyryfine مقابل برنامج في دليلك الحالي من خلال تمرير اسمه كوسيطة:
hyperfine a.out
إذا جربت هذا ، فستحصل على خطأ مثل “الأمر الذي تم إنهائه برمز خروج غير صفري 127” ، والذي قد يكون من الصعب تصحيحه.
بدلاً من ذلك ، فقط تم نقل مسار إلى الأمر ، على سبيل المثال
hyperfine ./a.out
لأسباب مماثلة ، من الأفضل اقتباس أوامرك:
hyperfine "du -skh ~"
كيف يمكن أن تساعدك القياس مع فرط الدقة
يمكن أن يكون القياس الدقيق كما تختار صنعه ، سواء كنت تقوم بتسويق منتج ما ، أو تتجادل بتغيير الكود ، أو مجرد مهتم بالسرعة التي يمكنك تشغيلها عبر محرك الأقراص الثابتة.
التحقق من كفاءة الكود الخاص بك
يعد Hyperfine رائعًا في مقارنة النتائج من نسختين من البرنامج في نفس الظروف. باستخدامه ، يمكنك تحسين منطق البرنامج وتحسين التعليمات البرمجية الخاصة بك.
تتضمن مقالنا في أمر Linux Time برنامجين C التي يمكنك استخدامها لإظهار هذا المفهوم. الأول ، loop1.c ، يكرر على سلسلة من المرات الثابتة (500000) ، وحساب عدد الواصلات:
#include "stdio.h"
#include "string.h"
int main() {
char szString[] = "how-to-geek-how-to-geek-how-to-geek-how-to-geek";
int i, j, len = strlen(szString), count = 0;
for (j = 0; j < 500000; j++)
for (i = 0; i < len; i++)
if (szString[i] == '-')
count++;
printf("Counted %d hyphens\n", count);
}
والثاني ، loop2.c ، متشابه للغاية ، لكنه يدعو strlen () مباشرة في حالة الحلقة:
#include "stdio.h"
#include "string.h"
int main() {
char szString[] = "how-to-geek-how-to-geek-how-to-geek-how-to-geek";
int i, j, count = 0;
for (j = 0; j < 500000; j++)
for (i = 0; i < strlen(szString); i++)
if (szString[i] == '-')
count++;
printf("Counted %d hyphens\n", count);
}
نظرًا لأن استدعاء الوظيفة موجود الآن داخل الحلقة الخارجية ، فإن Strlen () يعمل 500000 مرة بدلاً من مرة واحدة فقط. يمكن أن يعطي الأمر الوقت معلومات أساسية حول كيفية مقارنة هذين الإصدارين من نفس البرنامج:
لكن Hyper -Fine يعطي مزيدًا من التفاصيل ، حتى في الوضع الافتراضي الأساسي:
توقيت أوامر طويلة الأجل
على الرغم من أن Hyper -Fine أمر مثير للاهتمام بشكل خاص للمبرمجين ومسؤولي النظام ، يمكنك استخدامه في ظروف أخرى. على سبيل المثال ، إذا كنت تستخدم أمرًا طويل الأمد وخلفيةه أثناء العمل ، فربما لا تعرف مقدار الوقت الذي تستغرقه بالفعل. يمكن أن يساعد الدخول إلى عادة تشغيله عبر Fyrics:
للحصول على أمر طويل الأمد ، من المحتمل أن ترغب في الحد من عدد مرات تشغيلها. بشكل افتراضي ، تستخدم الأداة الاستدلال الخاص بها لتحديد عدد كبير من عمليات التشغيل لتحقيق نتائج دقيقة. يمكنك تجاوز هذا باستخدام خيار -runs:
hyperfine --runs 1 'du -skh ~'
التعامل مع التحذيرات والأخطاء
تحرص Hyperfine على تحذيرات الإبلاغ ، ربما لأنها تهدف إلى تقديم إحصاءات دقيقة للغاية. لكنك قد لا تهتم دائمًا كثيرًا بالحصول على نتيجة علمية صارمة ؛ في بعض الأحيان ، مجرد الحصول على فهم غامض يكفي. يوفر Hyperfine الخيارات التي تلبي هذه الحالة.
إحدى هذه الحالات هي أمر يرجع رمز خروج غير صفري ، والذي يشير عادة إلى أن الأمر قد فشل. في مثل هذه الحالات ، ستقوم Hyper -Fine بالإبلاغ عن خطأ:
كما تشرح رسالة الخطأ ، يمكنك تجاهل مثل هذه الأخطاء باستخدام خيار -i أو محاولة تشخيصها باستخدام -Output. اعتمادًا على ما تفعله ، ربما يكون الأول جيدًا بما فيه الكفاية.
على سبيل المثال ، إذا كان مثال DU السابق يلقي خطأً ، فسيظل يتم تشغيله حتى الانتهاء. إذا قمت بتشغيل DU عبر القرص بأكمله ، فقد تفشل مع وجود خطأ في ملف واحد ، مما يجعل التشغيل عديم الفائدة. لاحظ أن الركض مع -لا يزال بإمكانك إنتاج تحذير:
تحذير: تجاهل رمز الخروج غير الصفر.
قد ترى أيضًا أخطاء تتعلق بكيفية تشغيل فرط الدقة أثناء تشغيل ذاكرة التخزين المؤقت أو البرامج الأخرى. سيقوم خيار -warmup بتشغيل الأمر الخاص بك عدة مرات قبل أن يبدأ القياس ، مما يساعد على تسخين ذاكرة التخزين المؤقت ويمكن أن ينتج نتائج أكثر واقعية.
يمكنك أيضًا القيام بالعكس لقياس أسوأ الحالات. يتيح لك خيار -prepare تشغيل أمر آخر أثناء كل عملية قياس. الأمر متروك لك لتقديم أمر من شأنه مسح أي ذاكرة التخزين المؤقت التي قد تؤثر على نتائجك.
العمل مع نتائج Hyperfine
يظهر Hyper-Fine أن التوقيت يؤدي إلى تنسيق مضغوط مضغوط ، وهو مثالي لفحص سريع في المحطة الخاصة بك. إذا كنت ترغب في تحليل النتائج بشكل أكبر ، فستحتاج إليها بتنسيق أفضل.
يتيح لك خيار-Export-json تحديد ملف لتخزين نتائج تنسيق JSON. سيبدو شيء من هذا القبيل:
توضح هذه النتائج أن فرط الدقة قد تدير قيادتك عدة مرات أكثر مما تتوقع. في هذه الحالة ، ركض LS أكثر من 400 مرة لبناء مجموعة شاملة من النتائج.
قد ترغب حتى في تشغيل هذا النوع من القياس كاختبار منتظم ، إما ضد برنامج معين أو الأجهزة الحالية التي تقوم بتشغيلها عليها. إن إعداد وظيفة cron لأتمتة القياس سيجعل هذا أسهل بكثير.
6