[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