[Rust] Nightly: cargo bench
cargo bench๋ ์ฑ๋ฅ ๋ฒค์น๋งํฌ๋ฅผ ๋๋ ค์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
๊ทผ๋ฐ ํต์ฌ ๊ตฌ์ฑ์์๊ฐ ๋๋ถ๋ถ nightly์ ์์ด์, ์ฐ๋ ค๋ฉด nightly๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค.

๊ทธ๋ฆฌ๊ณ ์์ค์ฝ๋ ์ต์๋จ์ ์ด๊ฑธ ๋ฐ์์ค๋ค.
#![feature(test)]
extern crate test;
ํ์ํ nightly ๋ชจ๋์ด๋ค.
๋ฒค์น๋งํฌ ๋๋ ค๋ณด๊ธฐ
๋ง์ฝ ์ด๋ฐ add ํจ์๊ฐ ์๋ค ์น์.
์ด ํจ์์ ๋ํ ์ฑ๋ฅ ๋ฒค์น๋งํฌ๊ฐ ํ์ํ๋ค๋ฉด, ์ด๋ฐ์์ผ๋ก ๋ฒค์น๋งํฌ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
ํจ์ ํ๋กํ ํ์
์ ์ ๋๋ก ๋ง์ถฐ์ค์ผ ํ๊ณ , #[bench] ๋งคํฌ๋ก๋ฅผ ๋ฌ์์ค์ผ ํ๋ค.
๊ทธ๋ผ ๋จ์ํ
์คํธ์ฒ๋ผ ํน์ํ ํจ์๋ก ๋ถ๋ฅ๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ด๋ถ์์๋ ๋ฒค์น๋งํฌ ๊ฐ์ฒด์ iterator๋ก ๋ฒค์น๋งํฌ๋ฅผ ์ํํ๋ค.
iter์ ํด๋ก์ ๋ก ์ ๋ฌ๋ ๋ก์ง์ ๋ฒค์น๋งํฌ๋ฅผ ์ํด์ ์ฌ๋ฌ๋ฒ ์คํ๋๋ ๋ก์ง์ด ๋๋ค. ๋์ถฉ ํ์ธํด๋ณด๋ 300๋ฒ ์ ๋ ๋๋ ค๋ณด๊ณ ํ๋๋ผ.
๊ทธ๋์ ํ ์คํธ๋ฅผ ์ํ ์ด๊ธฐ ๊ฐ ์ค์ ์ iter ๋ฐ์๋ค๊ฐ ํด์ผ ํ๋ค.
์๋ฌดํผ ์ด๋ฐ์์ผ๋ก ๊ตฌ์ฑํด์ ๋๋ฆฌ๋ฉด

์ด๋ฐ์์ผ๋ก ํ๊ท ์ ์ธ ๋ฐ๋ณต๋น ์คํ์๊ฐ๊ณผ ์ค์ฐจ๋ฅผ ์๋ ค์ค๋ค.
๊ทผ๋ฐ ์ด ๊ฒฝ์ฐ์๋ ๋ก์ง์ด ๋๋ฌด ๊ฐ๋ฒผ์์ 0 ๋๋
ธ์ด๋ ๋์ค์ง ์์๋ค.
์ด๋ฐ๊ฑฐํ ๋ ๊ฐ์ฅ ๋ง๋งํ ์ ๋ ฌ๋ก ๋ค์ ํ์ธ์ ํด๋ณด๊ฒ ๋ค.
๋ฒ๋ธ์ํธ ํ๋ ์ค๋นํ๊ณ

ํต์ํธ๋ ํ๋ ์ค๋นํ๋ค.
๋๋ค ๋ฐฐ์ด์ ๋ค์์ด์ ์ ๋ ฌ์ ๋๋ฆฌ๋๋ก ํ๋ค.
๊ทธ๋ผ ๋ค์ ์๊ฐ์ด ์ง๋ ๋ค์ ๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฝ์์ค ๊ฒ์ด๋ค.
๋ฒ๋ธ์ 2.5์ด, ํต์ํธ๋ 1.3์ด ์ ๋.
ํ๊ท ์คํ์๊ฐ๋ 2๋ฐฐ๋ ์ฐจ์ด๋ฌ๊ณ , ์ญ์ ํต์ํธ๊ฐ ํจ์ฌ ๋น ๋ฅด๋ค.
๊ธฐํ: ๋ก๊ทธ ์ฐ๊ธฐ
๋ฒค์น๋งํฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ค ์ถ๋ ฅ์ ๋ฌด์ํ๋ค.
๊ทผ๋ฐ ๊ทธ๋๋ ๋๋ฒ๊น
์ ํ๋ค๋ณด๋ฉด ์ถ๋ ฅ์ ๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๊ฒ์ด๋ค.
๊ทธ๋ด๋๋ no-capture ์ต์
์ ์ฃผ๋ฉด ๋๋ค.


์ด์ stable์ ๋ค์ด์์ผ๋ฉด ํ๋ ๋ฐ๋์ด๋ค.
์ฐธ์กฐ
https://doc.rust-lang.org/cargo/commands/cargo-bench.html
https://doc.rust-lang.org/nightly/unstable-book/library-features/test.html