본문 바로가기

질문 연습3

로깅 추적을 위한 AOP 적용과 이후 성능 차이 그리고 why ?! 개요 사내에서 만든 서비스에 메서드 전후로 AOP를 걸고 쓰레드별로 추적하는 기능을 덧붙여서 사용해볼 기회가 있었다. 성능이 어떻게 달라질 것인지 궁금했다. 이 글은 AOP 적용 이전과 이후 성능 차이를 기록하고 이를 분석해본 글이다. 그리고 이 결과에 대한 피드백으로 들어온 어떤 질문에 대해 고민해 본 내용을 소개한다. 사용한 툴 장비: macbook pro 13` 2020 (m1), 16GB, Ventura 13.5 성능 측정: JMeter, Spring Actuator(Prometheus, Grafana) 개발: Mvc: Springboot 2.6.7, mysql 8.0 테스트의 특성상 많은 더미 데이터를 사용하지는 않았다. 목차 Log Trace AOP 적용 이전 1.1 단건 조회 1.2 검색 조.. 2023. 12. 14.
컴퓨터는 실제로 배열의 데이터에 index로 접근할까? 컴퓨터는 실제로 배열의 데이터에 index로 접근할까? 배열과 인덱스의 기본 이해 배열은 연속적인 메모리 공간에 데이터를 저장하는 구조이다. 각 요소는 인덱스를 통해 접근된다. 메모리 주소와 인덱스의 관계 그러나, 인덱스는 실제 메모리 주소를 직접 나타내지는 않는다. 인덱스는 기본적으로 메모리 주소에 대한 '오프셋'을 의미한다. 실제 메모리 접근 방식 실제 메모리 주소 계산을 예로 들어보자. 배열의 시작 주소가 1000이고, 각 요소가 4바이트를 차지한다면, 인덱스 3의 요소는 어떻게 계산될까? 계산식은 '1000 + (3 * 4)'가 되어, 이 요소의 메모리 주소는 1012가 된다. 이처럼 배열은 실제로는 '기준 주소 + (인덱스 * 요소 크기)'로 계산된 값.. 2023. 11. 24.
왜 int, String 배열은 스트림(Stream)으로 쉽게 변환되는데 char 배열은 안 되는 것일까?! (자바 캐릭터 배열 스트림으로 변환하기) Java.util 패키지의 Arrays 클래스를 이용하면 간단히 Stream으로 변경할 수 있다. 위에서와 int 외에도 다양한 숫자형 strem 변환을 지원한다. public class Example { public static void main(String[] args) { toStream(new int[]{1, 2, 3, 4, 5}); } private static void toStream(int[] array) { IntStream stream = Arrays.stream(array); } } String의 경우 제네릭 T 타입 배열로 인자값이 들어가는 케이스로 변환된다. private static void toStream(String[] array){ Stream stream = Arrays.s.. 2023. 6. 24.