728x90
개요
이번 "이진수" 문제는 10진수를 2진수로 바꾸고 1의 인덱스 위치를 찾아 낮은 인덱스부터 출력하는 간단한 문제입니다.
풀이
해당 문제를 풀때는 이진수로 변환할 때 toBinaryString()메서드와 toString()메서드를 사용할 수 있습니다.
toBinaryString()
Integer.toBinaryString(num)
toString()
Integer.toString(num,2)
그런데 toBinaryString()메서드와 toString()메서드 중 어느것이 좀 더 효율적이고, 빠른 메서드인지 궁금했습니다.
toBinaryString() VS toString()
public class BinaryConversionTest {
public static void main(String[] args) {
int number = 123456789;
int iterations = 10000000; // 1천만번 반복
// toBinaryString 테스트
long startTime1 = System.nanoTime();
for (int i = 0; i < iterations; i++) {
String binary1 = Integer.toBinaryString(number);
}
long endTime1 = System.nanoTime();
// toString(2) 테스트
long startTime2 = System.nanoTime();
for (int i = 0; i < iterations; i++) {
String binary2 = Integer.toString(number, 2);
}
long endTime2 = System.nanoTime();
// 결과 출력
System.out.println("toBinaryString 실행 시간: " + (endTime1 - startTime1) / 1000000.0 + "ms");
System.out.println("toString(2) 실행 시간: " + (endTime2 - startTime2) / 1000000.0 + "ms");
// 결과값 확인
System.out.println("\n결과값 비교:");
System.out.println("toBinaryString: " + Integer.toBinaryString(number));
System.out.println("toString(2): " + Integer.toString(number, 2));
}
}
두 메서드를 비교하기 위해서 toBinaryString()과 toString(2) 메서드를 각각 1천만 번 반복 실행하고, 각 메서드의 실행 시간을 측정하는 방법을 사용했습니다.
이 테스트는 두 메서드가 동일한 기능을 수행하는지 확인하고, 성능 차이를 비교하기 위해 설계되었습니다.
실행 시간은 System.nanoTime()을 사용하여 측정하였고, 결과는 밀리초 단위로 출력됩니다. 추가적으로, 두 메서드가 동일한 결과를 반환하는지 확인하기 위해 결과값도 비교하였습니다.
- toBinaryString()이 약 237.57ms 소요
- toString(2)가 약 693.98ms 소요
- toBinaryString()이 toString(2)보다 약 2.92배 더 빠름 (693.98 / 237.57 ≈ 2.92)
로그를 보면 알 수 있듯이 toBinaryString()메서드가 더 빠르다는 것을 알 수 있습니다. 이러한 성능 차이가 발생하는 이유는 toString(2)가 진법 확인 및 유효성 검사 등의 추가적인 작업을 수행하기 때문입니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.11.11 - Java에서 소수점 반올림하는 방법 (Math.round(), String.format()) (0) | 2024.11.11 |
---|---|
[TIL, 일일 회고] 2024.11.10 - RBAC와 ABAC란 무엇일까❓ (0) | 2024.11.10 |
[TIL, 일일 회고] 2024.11.08 - StringBuilder의 공백 처리 방법: deleteCharAt()과 setLength() 비교 (3) | 2024.11.08 |
[TIL, 일일 회고] 2024.11.07 - DDD에서 도메인 서비스와 애플리케이션 서비스를 나누는 이유 (2) | 2024.11.07 |
[TIL, 일일 회고] 2024.11.06 - pandas란 무엇일까❓ (1) | 2024.11.06 |