IP 주소를 32비트 정수로 변환하고 32비트 정수로 변환된 IP 주소를 다시 문자열로 되돌리는 코드가 필요해 간단히 Copilot과 ChatGPT4에게 물어봤다.
fun ipToNumber(ipAddress: String): Long {
return ipAddress.split(".").fold(0L) { total, next ->
total * 256 + next.toInt()
}
}
아이피 주소를 32비트 정수로 변환하는 로직은 두 AI는 동일한 코드를 내놓았다.
그럼 되돌릴땐 어떨까?
Copilot:
fun numberToIp(number: Long): String {
return (0..3).map { number shr (8 * it) and 0xFF }.reversed().joinToString(".")
}
ChatGPT4:
fun numberToIp2(number: Long): String {
return (listOf((number shr 24) and 0xFF, (number shr 16) and 0xFF, (number shr 8) and 0xFF, number and 0xFF)).joinToString(".") { it.toString() }
}
코파일럿은 반복문을 이용했고 ChatGPT는 배열 10진 정수로변환하여 배열을 마지막으로 조인하여 문자열로 만들고 있다.
성능차이는 얼마나 날까?
다음의 코드로 비교해 보았다.
val startTime = System.nanoTime()
for (i in 0..1000000) {
val ip = numberToIp(number)
}
val endTime = System.nanoTime()
val duration = (endTime - startTime) / 1_000_000
println("Duration: $duration ms")
val startTime2 = System.nanoTime()
for (i in 0..1000000) {
val ip = numberToIp2(number)
}
val endTime2 = System.nanoTime()
val duration2 = (endTime2 - startTime2) / 1_000_000
println("Duration2: $duration2 ms")
결과는?
Duration: 520 ms
Duration2: 277 ms
ChatGPT4의 승리이다.
반응형