IP주소 32비트 정수 변환 및 되돌리기 AI 코드 및 성능 비교

2024. 2. 2. 17:08·Language/Kotlin

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의 승리이다.

 
 
반응형
저작자표시 비영리 (새창열림)
'Language/Kotlin' 카테고리의 다른 글
  • Gson 직렬화/역직렬화를 이용하여 데이터를 가공하기
  • Observer 패턴 예제
  • var list = mutableListOf<T>() 를 사용하지 마세요.
  • [Querydsl] n시간 이전 데이터 삭제
Kua
Kua
정보 공유, 개인 정리 공간 입니다.
  • Kua
    Kua's Miscellaneous
    Kua
    • 분류 전체보기 (185)
      • 대문 (2)
      • Tips (25)
        • Chrome (2)
        • Windows (4)
        • IDE (3)
        • 기타 (16)
      • CodingTest (44)
      • Language (20)
        • PHP (5)
        • C# (7)
        • Java (1)
        • Kotlin (7)
      • Framework & Runtime (16)
        • SpringBoot (12)
        • Node.js (2)
        • Vue.js (1)
        • Gradle (1)
      • DevOps (13)
        • Linux (1)
        • Docker (4)
        • Kubernetes (2)
        • Apache Kafka (1)
        • AWS (1)
      • 일상다반사 (53)
        • 도서 (1)
        • 개발 (8)
        • 후기 - IT (7)
        • 후기 - 일상 (13)
        • 차가리 (4)
        • 방송통신대학교 (4)
        • 음식 (2)
      • Games (12)
        • Minecraft (7)
        • VR (2)
        • 그외 (3)
  • 최근 글

  • 인기 글

  • 태그

    spring
    c#
    Algorithm
    bronze1
    백준
    Windows
    bronze2
    알고리즘
    codingtest
    java
    github
    Kotlin
    error
    갤럭시
    Spring Boot
    Plugin
    Silver5
    코딩테스트
    minecraft
    후기
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.0
Kua
IP주소 32비트 정수 변환 및 되돌리기 AI 코드 및 성능 비교
상단으로

티스토리툴바