C++/c++

[C++] ์ธ๋ผ์ธ ํ•จ์ˆ˜

Rainbow๐ŸŒˆCoder 2022. 12. 30. 09:18
728x90

 

์ธ๋ผ์ธ ํ•จ์ˆ˜

 

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ์—๋Š” ์•ฝ๊ฐ„์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฆ‰ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „์— ๋ชจ๋“  ๋ ˆ์ง€์Šคํ„ฐ(CPU ์•ˆ์˜ ์ €์žฅ ๊ณต๊ฐ„)๊ฐ€ ์ €์žฅ๋˜์–ด์•ผ ํ•˜๊ณ  ์ธ์ˆ˜๋“ค์„ ๋ณต์‚ฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„์—๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋“ค์ด ๋‹ค์‹œ ๋ณต๊ตฌ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

 

๋งŒ์•ฝ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ผ๋ฉด ํ•จ์ˆ˜ ์•ˆ์˜ ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ค€๋น„ํ•˜๋Š” ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ์—๋Š” ์ฐจ๋ผ๋ฆฌ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ์„œ ๋„ฃ์–ด์ฃผ๋Š” ํŽธ์ด ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

c++์—๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ์„œ inline์ด๋ผ๊ณ  ํ•˜๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ๋‹ค. ๋งŒ์•ฝ ํ•จ์ˆ˜ ์ด๋ฆ„ ์•ž์— inline์ด ๋ถ™์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ•จ์ˆ ๋ฅด ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์— ์ง์ ‘ ์ง‘์–ด๋„ฃ๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋ฅผ ์ธ๋ผ์ธ ํ•จ์ˆ˜(inline function)๋ผ๊ณ  ํ•œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ๋งŒ๋“ค๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ธ๋ผ์ธ ํ•จ์ˆ˜๋กœ ์ •์˜ํ•˜๋ ค๋ฉด ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ํ˜• ์•ž์— inline๋งŒ ๋ถ™์ด๋ฉด ๋œ๋‹ค. ํ•˜๋‚˜์˜ ์˜ˆ๋กœ ์ฃผ์–ด์ง„ ๊ฐ’์„ ์ œ๊ณฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ธ๋ผ์ธ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

//์‹ค์ˆ˜๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜
inline double square(double i)
{
	return i*i;
}

 

- ์ฒœ์ธ๊ตญ ์ €, [์–ด์„œ์™€ c++์€ ์ฒ˜์Œ์ด์ง€!], p.145 ๋ฐœ์ทŒํฌ์ŠคํŒ…

 

 

๋ฉค๋ฒ„ ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€ ์ •์˜์™€ ์™ธ๋ถ€ ์ •์˜ ์ฐจ์ด์ 

 

๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ํด๋ž˜์Šค ์™ธ๋ถ€์— ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

- ๋ฉค๋ฒ„ ํ•จ์ˆ˜๊ฐ€ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ •์˜๋˜๋ฉด ์ž๋™์ ์œผ๋กœ ์ธ๋ผ์ธ(inline) ํ•จ์ˆ˜๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋ฉค๋ฒ„ ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋กœ ๋Œ€์น˜๋œ๋‹ค.

- ๋ฉค๋ฒ„ ํ•จ์ˆ˜๊ฐ€ ํด๋ž˜์Šค ์™ธ๋ถ€์— ์ •์˜๋˜๋ฉด ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ํ˜ธ์ถœ๋œ๋‹ค. ์ฆ‰ ์Šคํƒ์— ์ธ์ˆ˜๋“ค์„ ์ €์žฅํ•˜๊ณ  ๋ณต๊ท€ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ ํ›„์— ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋กœ ์ œ์–ด๊ฐ€ ์ด๋™ํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉค๋ฒ„ ํ•จ์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉด ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉค๋ฒ„ ํ•จ์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ ํฐ ๊ฒฝ์šฐ์— ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ •์˜ํ•˜๋ฉด ์ฝ”๋“œ์˜ ๋ณต์‚ฌ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ผ์–ด๋‚˜์„œ ์‹คํ–‰ ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ์ธ๋ผ์ธ ํ•จ์ˆ˜์˜ ์žฅ๋‹จ์ ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ํƒํ•  ๋ฌธ์ œ์ด๋‹ค. ์‹ค์ „์—์„œ๋Š” ๋ณดํ†ต ๋ฉค๋ฒ„ ํ•จ์ˆ˜๋ฅผ ํด๋ž˜์Šค ์™ธ๋ถ€์— ๋งŽ์ด ์ •์˜ํ•œ๋‹ค.

 

 

- ์ฒœ์ธ๊ตญ ์ €, [์–ด์„œ์™€ c++์€ ์ฒ˜์Œ์ด์ง€!], p.192 ๋ฐœ์ทŒํฌ์ŠคํŒ…

728x90