본문 바로가기

프로그래밍(TA, AA)/JVM 언어

(117)
[자바성능] for 루프 성능 1. 조건문에서의 속도 조건문은 성능에 얼마나 많이 영향을 줄까요? 먼저 조건문에 어떤 것들이 있는지 보고, 조건문이 얼마나 성능에 영향을 주는지 알아보면, 조건문의 종류는 다음과 같습니다. if-else if-else switch if문 안에는 boolean 형태의 결과값만 사용할 수 있습니다. switch문은 byte, short, char, int, string 등을 사용한 조건 분기가 가능합니다. 일반적으로 if문에서 분기를 많이 하면 시간이 많이 소요된다고 생각하는데, 실제로는 그렇지 않습니다. if문 조건 안에 들어가는 비교 구문에서 속도를 잡아먹지 않는 한, if 문장 자체에서는 그리 많은 시간이 소요되지 않습니다. StopWatchAverage s1 = new StopWatchAverage..
[자바성능] 자료형 성능 비교 일반적인 프로젝트에서 VO객체 패턴을 많이 사용합니다. 그 객체 안에는 대부분 Collection이나 Map 등의 인터페이스를 상속받는 객체가 많이 사용됩니다. 대부분 목록 데이터를 가장 담기 좋은 것이 배열이고, 그 다음으로 Collection 연관된 객체이기 때문에 그렇습니다. 배열은 처음부터 크기를 지정해야 하지만, Collection의 대부분의 객체들은 그럴 필요가 없이 객체들이 채워질 때마다 자동으로 크기가 증가됩니다. 어떤 객체를 써야 성능상 좋은지에 대해 알아보겠습니다. 1. Collection 및 Map 인터페이스의 이해 배열을 제외하고 데이터를 담기 가장 좋은 객체는 Collection 및 Map 인터페이스를 상속한 객체입니다. 사진 출처 ( http://foratgweb.blogspot..
[파일I/O] 자바 Path 및 메타데이터 파일 속성 NIO.2 Path 클래스 NIO.2 API(JSR 203: More New I/O APIs for the Java Platform)를 시작하기에는 새 추상 클래스 java.nio.file.Path 가 좋습니다. I/O 작업과 관련된 모든 애플리케이션은 Path 클래스의 강력한 기능을 이용합니다. 모든 I/O 작업이 Path 리소스에 기반하므로 Path 클래스는 NIO.2에서 가장 널리 사용하는 클래스입니다.Path 클래스 사용 용도는 1) 문법적인 용도로 파일시스템에 접근하지 않고 경로를 조작하는 작업에 주로 사용됩니다. 이는 메모리상에서 행해지는 논리적 조작입니다. 2) 경로를 참조하는 파일에 대한 작업에서 쓰이게 됩니다. NIO.2 API 메타데이터 파일 속성 파일이나 디렉토리가 숨김(Hidden)..
[병렬프로그래밍] 멀티 스레드와 동기화 멀티 스레드와 동기화 스레드를 사용하게되면 필연적으로 만나게되는 문제가 바로 동기화(Synchronization)입니다. 아래는 여러개의 스레드가 실행되는 과정을 도식화한 그림입니다. 여러개의 스레드들이 있다면 이 스레드들은 서로 번갈아가면서 실행이 될 것입니다. CPU가 하나이기때문에 OS의 스케줄링 정책에 따라 쓰레드를 조금씩 실행시키는 방식이 됩니다. 어떤 스레드가 실행될지는 OS 스케줄러만 알고 있습니다. - 애플리케이션에서 하나 이상의 스레드 사용시 새로운 스레드를 한개라도 생성해서 운영한다면 멀티스레드 프로그램이 됩니다.- 스레드는 별도로 실행되는 하나의 실행이므로 동시에 여러 스레드가 실행되면 스레드들이 공유하는 자원에 대해 동기화가 발생할 수 있습니다. 만약 스레드들이 서로 침범하는 영역없..
[병렬프로그래밍] 스레드그룹 이해하기 스레드 그룹 자바에서는 스레드들을 여러개 묶어 그룹으로 관리할 수 있습니다. 자바에서 제공하는 클래스들 중에는 쓰레드가 있고 스레도 그룹도 있습니다. 스레드 그룹 객체를 생성하면 그 밑에 스레드들을 모아 놓을 수 있습니다. 여러 개의 쓰레드들을 한꺼번에 모아서 관리하고 싶을때 이용하기도 합니다. 평상시에 스레드 그룹을 사용할 일이 많지는 않지만 대용량 프로그램의 경우에는 스레드 그룹을 이용하면 유용하게 스레드를 컨트롤할 수가 있습니다. 1) 스레드 그룹 개요- 애플리케이션에서 많은 스레드 생성시 사용- 스레드를 그룹으로 묶어서 사용하는 것이 편리- 그룹안의 스레드를 제어하기 위한 지원메소드 부족 (자바 라이브러리 중 가장 실패한 부분 중 하나) 2) 스레드 그룹 구성- 자바에서의 모든 스레드는 특정 스레..