๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

Collection.toArray(new T[0]) vs .toArray(new T[size]) / ์ปฌ๋ ‰์…˜์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์„ฑ๋Šฅ ๋น„๊ต ๋ณธ๋ฌธ

Java

Collection.toArray(new T[0]) vs .toArray(new T[size]) / ์ปฌ๋ ‰์…˜์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์„ฑ๋Šฅ ๋น„๊ต

9taetae9 2024. 1. 14. 02:26
728x90

Java์—์„œ ์ปฌ๋ ‰์…˜์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ toArray(new T[0])์™€ toArray(new T[size])๋กœ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๋Šฅ๋ฉด์—์„œ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ๋” ๊ถŒ์žฅ๋˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.


์„ฑ๋Šฅ ๋น„๊ต ๋ฐ ๋ถ„์„
JMH(Java Microbenchmark Harness)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ JDK ๋ฒ„์ „์—์„œ ๋‹ค์–‘ํ•œ ์ปฌ๋ ‰์…˜ ํฌ๊ธฐ์— ๋Œ€ํ•ด ์ด ๋‘ ๋ฐฉ๋ฒ•์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•œ ์•„ํ‹ฐํด์ด ์žˆ์–ด ํ•ต์‹ฌ๋งŒ ์š”์•ฝํ•ด๋ณด๋ คํ•œ๋‹ค.

์„ฑ๋Šฅ ์ธก์ • ๊ฒฐ๊ณผ, toArray(new T[0]) ๋ฐฉ๋ฒ•์ด toArray(new T[size]) ๋ฐฉ๋ฒ•๋ณด๋‹ค ์ผ๊ด€๋˜๊ฒŒ ๋” ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์˜€๋‹ค. ์ด๋Š” ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ๊ณผ์ •์—์„œ์˜ ์ฐจ์ด ๋•Œ๋ฌธ์ธ๋ฐ, toArray(new T[0])๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ตœ์ ํ™”๋œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ†ตํ•ด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ์ด ๊ณผ์ •์—์„œ ๋ฐฐ์—ด์˜ "zero initialization"์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด, toArray(new T[size])๋Š” ์‚ฌ์ „์— ํ• ๋‹น๋œ ๋ฐฐ์—ด์˜ "zero initialization"์„ ํ”ผํ•  ์ˆ˜ ์—†๊ณ  JVM์ด ์ด ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์ด ์กด์žฌํ•ด ์„ฑ๋Šฅ์ด ๋‹ค์†Œ ๋–จ์–ด์ง„๋‹ค.

๊ฒฐ๋ก 
๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์‚ฌ์ „์— ์ง€์ •(.toArray(new T[size]))ํ•˜๋Š” ๋Œ€์‹ , JVM์— ์˜ํ•ด ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ปฌ๋ ‰์…˜์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ๋Š” toArray(new T[0]) ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค.


 

๋” ์ž์„ธํ•œ ์„ฑ๋Šฅ ๋น„๊ต ๋‚ด์šฉ์€ ํ•˜๋‹จ ๋งํฌ ์ฐธ๊ณ 

https://www.baeldung.com/java-collection-toarray-methods

728x90