오픈소스 기여하기4 오픈소스 - Naver scavenger - 로깅 문자열 연결 vs 파라미터 치환 오늘은 Naver scavenger 오픈소스 프로젝트를 살펴보았습니다. scavenger는 런타임 Dead Code 분석 도구입니다. 디버깅 또는 로그를 추가하지 않고 메서드 호출이 확인 가능하고 이를 시각화해 유저들에게 보여줍니다. 이를 통해서 손쉽게 Dead Code를 파악하고 리팩토링할 수 있습니다. 1. 분석 대상분석 대상은 프로젝트 전체에서 발견되는 log 코드였습니다. 이번에 인공지능 알고리즘을 활용하는 프로젝트를 진행하면서 수많은 연산이 발생하는 경우 중간에 로그를 하나 찍더라도 성능에 많은 영향을 주는 것을 경험하였기에 프로젝트 전반에 걸쳐서 작성되어 있는 로그 코드를 유심하게 보게 되었습니다. 그러다가 scavenger는 거의 대부분의 로그들이 문자열 연결 방식으로 만들어져있다는 것을 .. 2024. 11. 23. 오픈소스 - 표준프레임워크 기여하기 - logging-log4j2, readme 기여 개요이번에는 전자정부 표준프레임워크 egovframe에 기여한 내용에 대해서 포스팅하겠습니다. 1. https://github.com/eGovFramework/egovframe-docs/pull/351 logging-log4j2_configuration_file.md 오탈자 수정 by junhyeongkim2 · Pull Request #351 · eGovFramework/egovframe-docsAppender 선언과 정의 테이블의 태그명 미표기 문제를 마크다운 수정으로 해결했습니다. 참고 : https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:%EC%84%A4%EC%A0%95_%ED%8C%8C%EC%9D%BC%EC%9D%84_.. 2024. 11. 13. 오픈소스 - hibernate-orm 기여하기 - testing orm 기여 개요이번에는 Hibernate-ORM 오픈소스에서 성능 최적화를 위한 개선 작업을 진행했습니다. 구체적으로는hibernate-testing/src/main/java/org/hibernate/testing/orm/domain/gambit/Shirt.java의 convertToEntityAttribute 메서드에서 불필요한 Integer.valueOf() 호출을 제거하는 작업이었습니다. 변경 사항 상세 설명변경 전 코드@Overridepublic String convertToEntityAttribute(Integer dbData) { if (dbData != null) { switch (Integer.valueOf(dbData)) { // 불필요한 변환 case .. 2024. 11. 8. 오픈소스 - Naver Arcus Client - MapDelete, MapGet JMH 벤치마킹 오늘은 Naver Arcus Client 오픈소스 프로젝트에 대한 성능 분석 결과를 공유하고자 합니다. 특히 문자열 연결(String Concatenation) 부분에 초점을 맞추어 분석을 진행했습니다.1. 배경Naver에 대한 관심으로 시작된 이 분석은 오픈소스 프로젝트를 탐색하는 과정에서 시작되었습니다. 코드를 살펴보던 중, MapDelete와 MapGet 클래스의 getSpaceSeparatedMkeys() 메소드에서 복잡한 for 루프와 StringBuilder를 사용하는 것이 눈에 띄었습니다. 왜 이렇게 복잡한 방식을 사용했는지 궁금해졌고, 이를 간단한 String.join()으로 리팩토링해보기로 결정했습니다.2. 분석 대상분석 대상은 MapDelete와 MapGet 클래스의 getSpaceSe.. 2024. 10. 10. 이전 1 다음