CARGO-BENCH(1) General Commands Manual CARGO-BENCH(1)

cargo-bench - اجرای بنچ‌مارک‌های یک بسته

cargo bench [options] [benchname] [-- bench-options]

کامپایل و اجرای بنچ‌مارک‌ها.

آرگومان فیلتر بنچ‌مارک benchname و تمام آرگومان‌های پس از دو خط تیره (--) به باینری‌های بنچ‌مارک و در نتیجه به libtest (چارچوب درونی rustc برای آزمون واحد و سنجش کارایی دقیق) ارسال می‌شوند. اگر آرگومان‌ها را هم به Cargo و هم به باینری ارسال می‌کنید، آرگومان‌های پس از -- به باینری و آرگومان‌های پیش از آن به Cargo فرستاده می‌شوند. برای جزئیات درباره آرگومان‌های libtest خروجی cargo bench -- --help را مشاهده کنید و فصل کتاب rustc درباره نحوه کارکرد آزمون‌ها را در https://doc.rust-lang.org/rustc/tests/index.html بررسی نمایید.

به‌عنوان مثال، دستور زیر فقط بنچ‌مارکی با نام foo را اجرا می‌کند (و از سایر بنچ‌مارک‌های دارای نام مشابه مانند foobar صرف‌نظر می‌کند):

cargo bench -- foo --exact

بنچ‌مارک‌ها با گزینه --test در rustc ساخته می‌شوند که با پیوند دادن کد شما با libtest یک فایل اجرایی ویژه ایجاد می‌کند. این فایل اجرایی به‌طور خودکار تمام توابعی را که با مشخصه #[bench] نشانه‌گذاری شده‌اند اجرا می‌کند. Cargo پرچم --bench را به مهار آزمون (test harness) ارسال می‌کند تا مشخص سازد صرف‌نظر از اینکه مهار آزمون libtest باشد یا یک مهار سفارشی، تنها بنچ‌مارک‌ها اجرا شوند.

مهار آزمون libtest را می‌توان با تنظیم harness = false در تنظیمات مانیفست هدف غیرفعال کرد؛ در این حالت، کد شما باید تابع main اختصاصی خود را برای مدیریت اجرای بنچ‌مارک‌ها ارائه دهد.

نکته: مشخصه #[bench] https://doc.rust-lang.org/nightly/unstable-book/library-features/test.html در حال حاضر ناپایدار (unstable) بوده و تنها در کانال nightly https://doc.rust-lang.org/book/appendix-07-nightly-rust.html در دسترس است. بسته‌هایی در crates.io https://crates.io/keywords/benchmark موجودند که ممکن است به اجرای بنچ‌مارک‌ها روی کانال پایدار (stable) کمک کنند، مانند Criterion https://crates.io/crates/criterion.

به‌طور پیش‌فرض، cargo bench از پروفایل bench https://doc.rust-lang.org/cargo/reference/profiles.html#bench استفاده می‌کند که بهینه‌سازی‌ها را فعال و اطلاعات اشکال‌زدایی را غیرفعال می‌سازد. اگر نیاز به اشکال‌زدایی یک بنچ‌مارک دارید، می‌توانید از گزینه خط فرمان --profile=dev برای جابه‌جایی به پروفایل dev استفاده کنید. سپس می‌توانید بنچ‌مارک با امکان اشکال‌زدایی فعال را درون یک اشکال‌زدا (debugger) اجرا نمایید.

دایرکتوری کاری هر بنچ‌مارک روی دایرکتوری ریشه بسته‌ای که بنچ‌مارک به آن تعلق دارد تنظیم می‌شود. تنظیم دایرکتوری کاری بنچ‌مارک‌ها روی دایرکتوری ریشه بسته، این امکان را فراهم می‌آورد که بنچ‌مارک‌ها صرف‌نظر از این‌که cargo bench از کجا اجرا شده باشد، با استفاده از مسیرهای نسبی به‌طور قابل‌اطمینان به فایل‌های بسته دسترسی داشته باشند.

--no-run

کامپایل بنچ‌مارک‌ها، اما بدون اجرای آن‌ها.

--no-fail-fast

اجرای همه بنچ‌مارک‌ها صرف‌نظر از شکست. بدون این پرچم، Cargo پس از شکست اولین فایل اجرایی خارج خواهد شد. مهار آزمون Rust همه بنچ‌مارک‌های درون فایل اجرایی را تا پایان اجرا خواهد کرد؛ این پرچم تنها برای فایل اجرایی به‌طور کلی اعمال می‌شود. به‌طور پیش‌فرض، هنگامی که هیچ گزینهٔ انتخاب بسته‌ای مشخص نشده باشد، بسته‌های انتخاب‌شده به فایل مانیفستِ انتخاب‌شده وابسته هستند (بر پایهٔ دایرکتوری کاری فعلی، اگر --manifest-path داده نشده باشد). اگر مانیفست، ریشهٔ یک فضای کاری (workspace) باشد، اعضای پیش‌فرض فضای کاری انتخاب می‌شوند؛ در غیر این صورت، تنها بسته‌ای که توسط مانیفست تعریف شده است انتخاب خواهد شد.

اعضای پیش‌فرض یک فضای کاری را می‌توان به‌صراحت با کلید workspace.default-members در مانیفست ریشه تعیین کرد. اگر این مقدار تنظیم نشده باشد، یک فضای کاری مجازی شامل تمام اعضای فضای کاری خواهد بود (معادل ارسال --workspace)، و یک فضای کاری غیرمجازی فقط خودِ کریت ریشه را شامل می‌شود.

-p spec…, --package spec…

سنجش کارایی تنها بسته‌های مشخص‌شده. برای اطلاع از ساختار SPEC، به cargo-pkgid(1) مراجعه کنید. این پرچم می‌تواند چندین بار مشخص شود و از الگوهای عمومی glob در یونیکس مانند *، ? و [] پشتیبانی می‌کند. با این حال، برای جلوگیری از بسط تصادفی الگوهای glob توسط پوسته پیش از آن‌که Cargo آن‌ها را پردازش کند، باید پیرامون هر الگو از علامت نقل‌قول تکی یا جفتی استفاده کنید.

--workspace

سنجش کارایی تمام اعضای موجود در فضای کاری.

--all

نام مستعار منسوخ‌شده برای --workspace.

--exclude SPEC…

مستثنی کردن بسته‌های مشخص‌شده. باید در کنار پرچم --workspace استفاده شود. این پرچم می‌تواند چندین بار مشخص شود و از الگوهای عمومی glob در یونیکس مانند *، ? و [] پشتیبانی می‌کند. با این حال، برای جلوگیری از بسط تصادفی الگوهای glob توسط پوسته پیش از آن‌که Cargo آن‌ها را پردازش کند، باید پیرامون هر الگو از علامت نقل‌قول تکی یا جفتی استفاده کنید.

هنگامی که هیچ گزینهٔ انتخاب هدفی مشخص نشده باشد، cargo bench هدف‌های زیر را از بسته‌های انتخاب‌شده می‌سازد:

•lib — جهت پیوند با باینری‌ها و بنچمارک‌ها استفاده می‌شود
•bins (تنها در صورتی که هدف‌های بنچمارک ساخته شوند و ویژگی‌های موردنیاز در دسترس باشند)
•lib به‌صورت بنچمارک
•bins به‌صورت بنچمارک
•هدف‌های بنچمارک

رفتار پیش‌فرض را می‌توان با تنظیم پرچم bench برای آن هدف در تنظیمات مانیفست تغییر داد. تنظیم نمونه‌ها به bench = true باعث ساخت و اجرای نمونه به‌عنوان یک بنچمارک می‌شود و تابع main نمونه را با بستر آزمون libtest جایگزین می‌کند.

تنظیم هدف‌ها به bench = false از سنجش کارایی آن‌ها به‌طور پیش‌فرض جلوگیری می‌کند. گزینه‌های انتخاب هدف که یک هدف را با نام مشخص می‌کنند (مانند --example foo) پرچم bench را نادیده گرفته و همیشه هدف مشخص‌شده را مورد سنجش کارایی قرار می‌دهند.

برای اطلاعات بیشتر دربارهٔ تنظیمات به ازای هر هدف، به Configuring a target https://doc.rust-lang.org/cargo/reference/cargo-targets.html#configuring-a-target مراجعه کنید.

هدف‌های باینری در صورتی که یک آزمون یکپارچه‌سازی یا بنچمارک برای سنجش کارایی انتخاب شده باشد، به‌طور خودکار ساخته می‌شوند. این به آزمون یکپارچه‌سازی اجازه می‌دهد تا فایل باینری را برای ارزیابی و آزمودن رفتار آن اجرا کند. متغیر محیطی CARGO_BIN_EXE_<name> https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-crates هنگام ساخت و اجرای آزمون یکپارچه‌سازی تنظیم می‌شود تا بتواند با استفاده از ماکروی env https://doc.rust-lang.org/std/macro.env.html یا تابع var https://doc.rust-lang.org/std/env/fn.var.html مکان فایل اجرایی را پیدا کند.

ارسال پرچم‌های انتخاب هدف، تنها هدف‌های مشخص‌شده را مورد سنجش کارایی قرار می‌دهد.

توجه داشته باشید که پرچم‌های --bin، --example، --test و --bench نیز از الگوهای عمومی glob در یونیکس مانند *، ? و [] پشتیبانی می‌کنند. با این حال، برای جلوگیری از بسط تصادفی الگوهای glob توسط پوسته پیش از آن‌که Cargo آن‌ها را پردازش کند، باید پیرامون هر الگوی glob از نقل‌قول تکی یا جفتی استفاده کنید.

--lib

سنجش کارایی کتابخانهٔ بسته.

--bin name…

سنجش کارایی باینری مشخص‌شده. این پرچم می‌تواند چندین بار مشخص شود و از الگوهای عمومی glob در یونیکس پشتیبانی می‌کند.

--bins

سنجش کارایی تمام هدف‌های باینری.

--example name…

سنجش کارایی نمونهٔ مشخص‌شده. این پرچم می‌تواند چندین بار مشخص شود و از الگوهای عمومی glob در یونیکس پشتیبانی می‌کند.

--examples

سنجش کارایی تمام هدف‌های نمونه (example).

--test name…

سنجش کارایی آزمون یکپارچه‌سازی مشخص‌شده. این پرچم می‌تواند چندین بار مشخص شود و از الگوهای عمومی glob در یونیکس پشتیبانی می‌کند.

--tests

سنجش کارایی تمام هدف‌هایی که پرچم مانیفست test = true برای آن‌ها تنظیم شده است. به‌طور پیش‌فرض این شامل کتابخانه و باینری‌های ساخته‌شده به‌عنوان آزمون‌های واحد (unittest)، و آزمون‌های یکپارچه‌سازی است. توجه داشته باشید که این کار همچنین هرگونه وابستگی مورد نیاز را می‌سازد، بنابراین ممکن است هدف lib دو بار ساخته شود (یک بار به‌عنوان آزمون واحد، و بار دیگر به‌عنوان وابستگی برای باینری‌ها، آزمون‌های یکپارچه‌سازی و غیره). هدف‌ها را می‌توان با تنظیم پرچم test در تنظیمات مانیفست برای آن هدف، فعال یا غیرفعال کرد.

--bench name…

سنجش کارایی بنچمارک مشخص‌شده. این پرچم می‌تواند چندین بار مشخص شود و از الگوهای عمومی glob در یونیکس پشتیبانی می‌کند.

--benches

سنجش کارایی تمام هدف‌هایی که پرچم مانیفست bench = true برای آن‌ها تنظیم شده است. به‌طور پیش‌فرض این شامل کتابخانه و باینری‌های ساخته‌شده به‌عنوان بنچمارک، و هدف‌های bench است. توجه داشته باشید که این کار همچنین هرگونه وابستگی مورد نیاز را می‌سازد، بنابراین ممکن است هدف lib دو بار ساخته شود (یک بار به‌عنوان بنچمارک، و بار دیگر به‌عنوان وابستگی برای باینری‌ها، بنچمارک‌ها و غیره). هدف‌ها را می‌توان با تنظیم پرچم bench در تنظیمات مانیفست برای آن هدف، فعال یا غیرفعال کرد.

--all-targets

سنجش کارایی تمام هدف‌ها. این معادل مشخص کردن --lib --bins --tests --benches --examples است. پرچم‌های ویژگی به شما امکان می‌دهند مشخص کنید کدام ویژگی‌ها فعال شوند. زمانی که هیچ گزینه‌ای برای ویژگی‌ها مشخص نشود، ویژگی default برای هر بستهٔ انتخاب‌شده فعال می‌شود.

برای جزئیات بیشتر، مستندات ویژگی‌ها https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options را ببینید.

-F features, --features features

فهرستی از ویژگی‌ها برای فعال‌سازی که با فاصله یا کاما از یکدیگر جدا شده‌اند. ویژگی‌های اعضای فضای کاری (workspace) را می‌توان با ساختار package-name/feature-name فعال کرد. این پرچم می‌تواند چندین بار مشخص شود که باعث فعال‌سازی همهٔ ویژگی‌های مشخص‌شده خواهد شد.

--all-features

فعال‌سازی تمام ویژگی‌های موجود برای تمام بسته‌های انتخاب‌شده.

--no-default-features

ویژگی default بسته‌های انتخاب‌شده را فعال نکن.

--target triple

اجرای بنچ‌مارک برای معماری هدف مشخص‌شده. این پرچم می‌تواند چندین بار مشخص شود. مقدار پیش‌فرض، معماری میزبان است. ساختار کلی این سه‌تایی به صورت <arch><sub>-<vendor>-<sys>-<abi> است.

مقادیر ممکن:

•هر هدف پشتیبانی‌شده در rustc --print target-list.
•"host-tuple"، که در داخل با هدف سیستم میزبان جایگزین خواهد شد. این گزینه به‌ویژه زمانی مفید است که در حال کامپایل متقاطع برخی crateها هستید و نمی‌خواهید ماشین میزبان خود را به عنوان یک هدف مشخص کنید (برای مثال، یک xtask در یک پروژهٔ مشترک که ممکن است توسط میزبان‌های متعددی روی آن کار شود).
•مسیری به یک مشخصات هدف سفارشی. برای اطلاعات بیشتر Custom Target Lookup Path https://doc.rust-lang.org/rustc/targets/custom.html#custom-target-lookup-path را ببینید.

این مقدار همچنین می‌تواند با مقدار پیکربندی build.target https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.

توجه داشته باشید که تعیین این پرچم باعث می‌شود Cargo در حالت متفاوتی اجرا شود که در آن مصنوعات هدف در یک دایرکتوری جداگانه قرار می‌گیرند. برای جزئیات بیشتر به مستندات حافظهٔ موقت ساخت https://doc.rust-lang.org/cargo/reference/build-cache.html مراجعه کنید.

--profile name

اجرای بنچ‌مارک با نمایهٔ (profile) مشخص‌شده. برای جزئیات بیشتر دربارهٔ نمایه‌ها به مرجع https://doc.rust-lang.org/cargo/reference/profiles.html مراجعه کنید.

--timings

اطلاعات مربوط به مدت‌زمان هر کامپایل را چاپ می‌کند و اطلاعات همروندی را در طول زمان دنبال می‌نماید.

در پایان فرایند ساخت، فایلی به نام cargo-timing.html در دایرکتوری target/cargo-timings نوشته خواهد شد. در صورتی که بخواهید اجرای قبلی را بررسی کنید، یک گزارش اضافی با برچسب زمان در نام فایل آن نیز ذخیره می‌شود. این گزارش‌ها صرفاً برای مطالعه توسط انسان مناسب هستند و داده‌های زمان‌بندی ماشین‌خوان ارائه نمی‌دهند.

--target-dir directory

دایرکتوری مربوط به تمام مصنوعات تولیدشده و فایل‌های میانی. همچنین می‌تواند با متغیر محیطی CARGO_TARGET_DIR یا مقدار پیکربندی build.target-dir https://doc.rust-lang.org/cargo/reference/config.html تعیین شود. پیش‌فرض آن پوشهٔ target در ریشهٔ فضای کاری است.

به‌طور پیش‌فرض، بستر آزمایش Rust خروجی اجرای بنچ‌مارک را پنهان می‌کند تا نتایج خوانا باقی بمانند. خروجی بنچ‌مارک را می‌توان (مثلاً برای اشکال‌زدایی) با ارسال --no-capture به باینری‌های بنچ‌مارک بازیابی کرد:

cargo bench -- --no-capture

-v, --verbose

استفاده از خروجی پرگو (verbose). می‌تواند دو بار مشخص شود تا خروجی “خیلی پرگو” نمایش داده شود که شامل اطلاعات بیشتری مانند هشدارهای وابستگی و خروجی اسکریپت ساخت است. همچنین می‌تواند با مقدار پیکربندی term.verbose https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.

-q, --quiet

پیام‌های ثبت وقایع (log) ابزار cargo را چاپ نمی‌کند. همچنین می‌تواند با مقدار پیکربندی term.quiet https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.

--color when

کنترل زمان استفاده از خروجی رنگی. مقادیر معتبر:
•auto (پیش‌فرض): به طور خودکار بررسی می‌کند که آیا ترمینال از رنگ پشتیبانی می‌کند یا خیر.
•always: همیشه رنگ‌ها را نمایش می‌دهد.
•never: هرگز رنگ‌ها را نمایش نمی‌دهد.

همچنین می‌تواند با مقدار پیکربندی term.color https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.

--message-format fmt

قالب خروجی برای پیام‌های عیب‌یابی. می‌تواند چندین بار مشخص شود و شامل مقادیری است که با کاما از هم جدا شده‌اند. مقادیر معتبر:
•human (پیش‌فرض): نمایش در یک قالب متنی انسان‌خوان. با short و json تداخل دارد.
•short: ارسال پیام‌های متنی کوتاه‌تر و انسان‌خوان. با human و json تداخل دارد.
•json: ارسال پیام‌های JSON به خروجی استاندارد (stdout). برای جزئیات بیشتر به مرجع https://doc.rust-lang.org/cargo/reference/external-tools.html#json-messages مراجعه کنید. با human و short تداخل دارد.
•json-diagnostic-short: تضمین می‌کند که فیلد rendered در پیام‌های JSON حاوی خروجی نمایشی “کوتاه” حاصل از rustc باشد. نمی‌تواند همراه با human یا short استفاده شود.
•json-diagnostic-rendered-ansi: تضمین می‌کند که فیلد rendered در پیام‌های JSON شامل کدهای رنگی توکار ANSI برای حفظ طرح رنگ پیش‌فرض rustc باشد. نمی‌تواند همراه با human یا short استفاده شود.
•json-render-diagnostics: به Cargo دستور می‌دهد که پیام‌های عیب‌یابی rustc را در پیام‌های JSON چاپ‌شده قرار ندهد، بلکه خود Cargo پیام‌های عیب‌یابی JSON دریافتی از rustc را نمایش دهد. پیام‌های عیب‌یابی JSON خودِ Cargo و سایر پیام‌های دریافتی از rustc همچنان ارسال می‌شوند. نمی‌تواند همراه با human یا short استفاده شود.

--manifest-path path

مسیر فایل Cargo.toml. به‌طور پیش‌فرض، Cargo فایل Cargo.toml را در دایرکتوری جاری یا هر یک از دایرکتوری‌های والد جستجو می‌کند.

--ignore-rust-version

نادیده گرفتن مشخصهٔ rust-version در بسته‌ها.

--locked

اطمینان حاصل می‌کند که دقیقاً همان وابستگی‌ها و نسخه‌هایی استفاده شوند که هنگام ایجاد اولیهٔ فایل Cargo.lock فعلی ثبت شده‌اند. در صورت بروز هر یک از سناریوهای زیر، Cargo با یک خطا متوقف خواهد شد:
•فایل lock موجود نباشد.
•‏Cargo به دلیل تفکیک وابستگیِ متفاوت، برای تغییر فایل lock تلاش کند.

این گزینه ممکن است در محیط‌هایی که در آن‌ها ساخت‌های قطعی (deterministic) مد نظر است، مانند خطوط لولهٔ CI، استفاده شود.

--offline

از دسترسی Cargo به شبکه به هر دلیلی جلوگیری می‌کند. بدون این پرچم، اگر Cargo نیاز به دسترسی به شبکه داشته باشد و شبکه در دسترس نباشد، با خطا متوقف می‌شود. با این پرچم، Cargo در صورت امکان تلاش خواهد کرد بدون شبکه به کار خود ادامه دهد.

توجه داشته باشید که این کار ممکن است منجر به تفکیک وابستگیِ متفاوتی نسبت به حالت برخط (online) شود. Cargo خود را به crateهایی که به‌صورت محلی دانلود شده‌اند محدود می‌کند، حتی اگر طبق نسخهٔ محلی نمایه (index)، نسخهٔ جدیدتری موجود باشد. برای دانلود وابستگی‌ها پیش از رفتن به حالت آفلاین، دستور cargo-fetch(1) را ببینید.

همچنین می‌تواند با مقدار پیکربندی net.offline https://doc.rust-lang.org/cargo/reference/config.html مشخص شود.

--frozen

معادل تعیین هر دو گزینهٔ --locked و --offline به‌طور هم‌زمان.

+toolchain

اگر Cargo با rustup نصب شده باشد، و اولین آرگومان cargo با + آغاز شود، به‌عنوان نام زنجیره ابزار (toolchain) متعلق به rustup تفسیر خواهد شد (مانند +stable یا +nightly). برای اطلاعات بیشتر درباره نحوه کارکرد جایگزینی زنجیره ابزارها، مستندات rustup https://rust-lang.github.io/rustup/overrides.html را ببینید.

--config KEY=VALUE یا PATH

یک مقدار پیکربندی Cargo را بازنویسی می‌کند. آرگومان باید در ساختار نحوی TOML به‌صورت KEY=VALUE باشد، یا به‌صورت مسیری به یک فایل پیکربندی اضافی ارائه شود. این پرچم می‌تواند چندین بار مشخص شود. برای اطلاعات بیشتر، بخش بازنویسی‌های خط فرمان https://doc.rust-lang.org/cargo/reference/config.html#command-line-overrides را ببینید.

-C PATH

دایرکتوری کاری فعلی را پیش از اجرای هرگونه عملیات مشخص‌شده تغییر می‌دهد. این امر بر مواردی چون محلی که cargo به‌طور پیش‌فرض برای مانیفست پروژه (Cargo.toml) جستجو می‌کند، و همچنین دایرکتوری‌هایی که برای یافتن .cargo/config.toml جستجو می‌شوند، تأثیر می‌گذارد. این گزینه باید پیش از نام دستور ظاهر شود، برای مثال cargo -C path/to/my-project build.

این گزینه تنها در کانال nightly https://doc.rust-lang.org/book/appendix-07-nightly-rust.html در دسترس است و برای فعال‌سازی به پرچم -Z unstable-options نیاز دارد (ببینید: #10098 https://github.com/rust-lang/cargo/issues/10098).

-h, --help

اطلاعات راهنما را نمایش می‌دهد.

-Z flag

پرچم‌های ناپایدار (فقط مخصوص نسخهٔ nightly) برای Cargo. برای جزئیات، cargo -Z help را اجرا کنید. آرگومان --jobs بر ساخت فایل اجرایی بنچ‌مارک اثر می‌گذارد، اما بر تعداد ریسه‌های مورد استفاده هنگام اجرای بنچ‌مارک‌ها اثرگذار نیست. بستر آزمون Rust بنچ‌مارک‌ها را به صورت ترتیبی در یک تک‌ریسه اجرا می‌کند.

-j N, --jobs N

تعداد کارهای موازی برای اجرا. همچنین می‌تواند با مقدار پیکربندی build.jobs https://doc.rust-lang.org/cargo/reference/config.html مشخص شود. پیش‌فرض، تعداد CPUهای منطقی است. اگر منفی باشد، بیشینهٔ تعداد کارهای موازی را برابر با تعداد CPUهای منطقی به‌علاوهٔ مقدار ارائه‌شده تنظیم می‌کند. اگر رشتهٔ default داده شود، مقدار را دوباره به پیش‌فرض بازمی‌گرداند. نباید 0 باشد.

اگرچه cargo bench شامل کامپایل می‌شود، اما گزینهٔ --keep-going را ارائه نمی‌دهد. از --no-fail-fast برای اجرای هرچه بیشتر بنچ‌مارک‌ها بدون توقف در نخستین شکست استفاده کنید. برای “کامپایل” کردن بیشترین بنچ‌مارک‌های ممکن، از --benches برای ساخت جداگانهٔ باینری‌های بنچ‌مارک استفاده کنید. برای نمونه:

cargo build --benches --release --keep-going
cargo bench --no-fail-fast

برای جزئیات دربارهٔ متغیرهای محیطی که Cargo می‌خواند، مرجع https://doc.rust-lang.org/cargo/reference/environment-variables.html را ببینید.

•0: دستور Cargo با موفقیت انجام شد.
•101: دستور Cargo با شکست مواجه شد.

1.ساخت و اجرای تمام بنچ‌مارک‌های بستهٔ کنونی:
cargo bench
2.تنها اجرای یک بنچ‌مارک مشخص درون یک هدف بنچ‌مارک معین:
cargo bench --bench bench_name -- modname::some_benchmark

cargo(1), cargo-test(1)