KR20060095091A - 개선된 컴파일 방법 및 장치 - Google Patents
개선된 컴파일 방법 및 장치 Download PDFInfo
- Publication number
- KR20060095091A KR20060095091A KR1020050015996A KR20050015996A KR20060095091A KR 20060095091 A KR20060095091 A KR 20060095091A KR 1020050015996 A KR1020050015996 A KR 1020050015996A KR 20050015996 A KR20050015996 A KR 20050015996A KR 20060095091 A KR20060095091 A KR 20060095091A
- Authority
- KR
- South Korea
- Prior art keywords
- compilation
- directory
- source files
- directories
- files
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
본 발명은 다수의 서로 다른 디렉토리에 존재하는, 다수의 소스 파일의 컴파일에 필요한 컴파일 참조 파일을 하나의 디렉토리에 저장하여, 소스 파일 컴파일시 하나의 디렉토리만을 참조하여 컴파일을 수행함으로서, 전체 컴파일 속도를 향상시킬 수 있다.
컴파일, 소스 파일, 패스트 헤더 디렉토리
Description
도1은 종래의 컴파일 과정을 나타낸 도면,
도2는 본 발명의 일 실시예에 따른 컴파일 장치의 구성을 나타낸 도면,
도3은 본 발명의 일 실시예에 따른 컴파일 과정을 나타낸 도면,
도4는 본 발명의 일 실시예에 따른 컴파일 장치의 동작 흐름도.
본 발명은 프로그램의 컴파일 방식에 관한 것으로, 특히, 향상된 속도를 가지는 컴파일 방법 및 장치에 관한 것이다.
일반적으로 프로그램이 실행되기 위해서는 상기 프로그램과 관련된 다수의 소스파일에 대한 일련의 컴파일 과정이 필요하다. 컴파일은 고수준의 언어로 작성된 프로그램의 모든 원시 부호를 프로그램의 실행 전에 목적 부호로 변환해주는 것으로, 프로그램이 최적의 상태에서 최적의 속도를 가지고 실행되도록 변환해 주는 것이다.
컴파일 과정은 다음과 같다. 먼저 임의의 프로그램에 대한 실행 요구가 있으면, 관련 소스 파일을 검색한다. 소스파일은 프로그램들이 구비한 기능이 증가하면 그 수가 증가함에 따라 모듈별로 각각의 디렉토리를 가지고 구분한다. 그리고 각 소스 파일 컴파일에 필요한 데이터가 저장된 디렉토리에 대한 경로를 안내하는 인크루드 패스(Include path)를 참조하여, 해당 디렉토리를 검색하여 검색된 각 소스 파일을 컴파일한다. 이러한 컴파일 과정을 도1에 도시하였다. 도1은 종래의 컴파일 과정을 나타낸 도면이다. 도1에 도시된바와 같이, 임의의 프로그램과 관련된 첫 번째 소스 파일(101)부터 n 번째 소스 파일(105)의 컴파일을 위해서, 컴파일러는 각 소스 파일의 컴파일을 수행할 때 마다 다수개의 디렉토리(107)를 참조한다.
상기한 바와 같이 종래의 컴파일은 각 소스 파일을 컴파일 할 때 마다, 관련된 데이터가 저장된 모든 디렉토리를 참조해야한다. 그런데, 이러한 방식은 프로그램의 기능이 증가함에 따라 전체 컴파일 속도를 떨어뜨리는 문제점을 발생한다. 즉, 프로그램의 기능이 증가함에 따라 프로그램과 관련된 소스파일의 수도 증가하고, 상기한 과정에 따라 컴파일하는 컴파일러는 소스 파일이 증가함에 따라 각각의 소스 파일을 컴파일 하는데 기존에 비해 더 많은 디렉토리를 참조하게를 참조하게 된다. 이에 따라, 전체적인 컴파일 속도가 매우 느려진다.
본 발명은, 상기한 문제점을 해결하기 위한 것으로, 향상된 속도를 가지는 컴파일 방법을 제공하는데 그 목적이 있다.
그리고 본 발명은 효율적으로 개선된 컴파일 방법을 제공하는데 그 목적이 있다.
상기의 목적을 달성하기 위한 본 발명은 수행명령을 받은 임의의 프로그램과 관련된 다수의 소스 파일을 검색하는 과정과, 상기 다수의 소스 파일 컴파일시 참조할 컴파일 참조 파일이 존재하는 다수개의 디렉토리를 검색하는 과정과, 상기 검색된 다수의 디렉토리에 대응하여 저장된 다수의 컴파일 참조 파일을 하나의 디렉토리에 저장하는 과정과, 상기 다수의 소스 파일을 상기 하나의 디렉토리를 참조하여 컴파일하는 과정을 구비함을 특징으로 한다.
그리고 본 발명은 입력되는 명령에 따라 임의의 프로그램을 수행에 따른 동작 과정을 제어하고, 상기 프로그램 수행시 필요한 컴파일 과정을 제어하는 제어부와, 상기 제어부의 제어하에, 상기 임의의 프로그램 수행에 따른 컴파일 요구 발생시, 상기 임의의 프로그램과 관련된 다수의 소스 파일을 검색하고, 상기 다수의 소스 파일 컴파일시 참조할 컴파일 참조 파일이 존재하는 다수의 참조 디렉토리를 검색하여 상기 컴파일 참조 파일을 검출하여 임의의 디렉토리에 저장하고, 상기 다수의 소스 파일을 상기 임의의 디렉토리를 참조하여 컴파일하는 컴파일러와, 상기 임의의 프로그램 데이터와, 상기 다수의 소스 파일과, 상기 다수의 참조 디렉토리와, 상기 임의의 디렉토리를 저장하는 메모리를 구비함을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다. 도면에서 동일한 구성요소들에 대해서는 비록 다른 도면에 표시되더라도 가능한 한 동일한 참조번호 및 부호로 나타내고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명은 생략한다.
먼저, 도2를 참조하여 본 발명의 일 실시예에 따른 컴파일 장치의 구성을 설명한다. 도2는 본 발명의 일 실시예에 따른 컴파일 장치의 구성을 나타낸 도면이다. 도2를 참조하여 컴파일 장치는 제어부(10)와, 컴파일러(20)와 메모리부(30)를 포함하여 구성된다.
상기 제어부(10)는 컴파일 장치의 전반적인 동작과 관련된 제어를 담당하며, 임의의 프로그램 실행 명령에 따라 상기 컴파일러(20)를 제어하여 상기 임의의 프로그램의 컴파일을 수행하여, 상기 임의의 프로그램을 실행한다.
상기 메모리(30)는 상기 제어부(10)의 처리 및 제어를 위한 프로그램, 참조 데이터, 갱신 가능한 각종 보관용 데이터, 다수의 프로그램 데이터 등을 저장하며, 제어부(10)의 워킹 메모리(working memory)로 제공된다. 그리고 본 발명의 일 실시예에 따라 패스트 헤더 디렉토리 저장영역(31)과, 참조 디렉토리 저장영역(33)과, 소스 파일 저장 영역(35)을 포함하여 이루어진다.
상기 참조 디렉토리 저장영역(33)은 컴파일에 필요한 컴파일 참조 파일이 저장된 다수의 디렉토리를 저장하는 저장 영역이다.
상기 소스 파일 저장영역(30)은 각종 프로그램과 관련되는 다수의 소스 파일 이 저장되는 영역이다.
상기 패스트 헤더 디렉토리 저장영역(31)은 본 발명에 따라 생성되는 패스트 헤더 데이터가 저장되는 디렉토리의 저장 영역(33)이다. 상기 패스트 헤더 데이터란 본 발명에 따라 임의의 소스 파일의 컴파일시 생성되며, 상기 소스 파일의 컴파일에 필요한 컴파일 참조 파일로 이루어지는 데이터로서, 각 소스 파일 컴파일시 참조된다.
상기 컴파일러(20)는 상기 제어부(10)의 제어하에 동작하며, 본 발명의 일 실시예에 따라, makefile부(21)와 패스트 헤더 유틸리티(23)를 포함하여 이루어진다.
상기 makefile부(21)는 컴파일과 관련된 일반적인 컴파일 기능을 수행하며, 소스 파일과 관련된 각 컴파일 참조 파일의 저장 경로를 구비한다.
상기 패스트 헤더 유틸리티(23)는 본 발명에 따라 생성된 상기 패스트 헤더 데이터를 상기 패스트 헤더 디렉토리 저장영역(31)에 저장한다.
상기한 구성으로 이루어진 컴파일러 장치의 대략적인 컴파일 과정을 도3에 도시하였다. 도3은 본 발명의 일 실시예에 따른 컴파일 과정을 나타낸 도면이다. 도3을 참조하여, 컴파일 장치는 n 개의 소스 파일을 컴파일 하기 위해 200단계에서 패스트 헤더 디렉토리를 생성한다. 상기 패스트 헤더 디렉토리의 생성은 210단계와 220단계의 동작을 수행에 따라 이루어진다. 컴파일장치는 210단계에서 다수개의 참조 디렉토리를 검색하고, 220단계에서 검색된 다수개의 참조 디렉토리를 한 개의 패스트 헤더 디렉토리로 취합하여, 패스트 헤더 디렉토리를 생성한다. 이후, 컴파 일러 장치는 첫 번째 소스 파일(101)부터 n 개의 소스 파일(105)까지 패스트 헤더 디렉토리(230)를 참조하여 컴파일을 수행한다.
이러한 과정의 컴파일에 따른 각 구성 요소의 동작 과정은 다음과 같다. 먼저 제어부(10)는 임의의 프로그램 실행 명령이 있으면, 상기 컴파일러(20)를 제어하여 상기 임의의 프로그램과 관련된 컴파일을 수행한다. 컴파일러(20)는 제어부(10)의 제어하에, 임의의 프로그램 실행에 필요한 다수개의 소스 파일을 상기 소스 파일 저장 영역(35)에서 검색한다. 그리고 makefile부(21)에 구비된 인크루드 패스를 참조하여 컴파일시 필요한 컴파일 참조 파일이 저장된 디렉토리의 경로 정보를 검색하여 참조 디렉토리 목록을 검출한다. 그리고 컴파일러(20)는 참조 디렉토리 저장영역(33)에 저장된 다수개의 디렉토리 중 상기 참조 디렉토리 목록에 포함되는 디렉토리를 검색하여 필요한 컴파일 참조 파일들을 검출한다. 컴파일러(20)는 검출한 컴파일 참조 파일을 패스트 헤더 데이터로 생성하여 상기 패스트 헤더 유틸리티(23)를 이용해 상기 패스트 헤더 디렉토리 저장 영역(31)의 패스트 헤더 디렉토리에 저장한다. 그리고, 컴파일러(20)는 다수개의 소스 파일을 상기 패스트 해더 디렉토리를 참조하여 각각 컴파일 한다.
상기한 과정에 따라 동작하는 컴파일 장치의 제어부(10)의 컴파일 동작 과정을 도4에 도시하였다. 도4는 본 발명의 일 실시예에 따른 컴파일 장치의 동작 흐름도이다. 도4를 참조하여, 제어부(10)는 301단계에서 임의의 프로그램 실행 명령이 있으면 303단계로 진행한다. 303단계에서 제어부(10)는 상기 임의의 프로그램과 관련되는 다수의 소스 파일에 대한 컴파일 요구 발생을 감지하고 305단계로 진행한 다. 305단계에서 제어부(10)는 makefile의 인크루드 패스를 참조하여 필요한 참조 디렉토리 목록을 검출하고 307단계로 진행한다. 307단계에서 제어부(10)는 검출된 참조 디렉토리 목록에 포함되는 디렉토리에서 컴파일 참조 파일을 검출하고 309단계로 진행한다. 309단계에서 제어부(10)는 검출된 컴파일 참조 파일을 패스트 헤더 데이터로 생성하고 311단계로 진행한다. 311단계에서 제어부(10)는 생성된 패스트 헤더 데이터를 패스트 헤더 디렉토리에 저장하고 313단계로 진행한다. 313단계에서 제어부(10)는 패스트 헤더 디렉토리를 참조하여 컴파일이 요구된 각 소스 파일을 컴파일 하고 컴파일 동작과정을 종료한다.
상기와 같이 본 발명은 다수의 서로 다른 디렉토리에 존재하는 다수의 소스 파일의 컴파일에 필요한 컴파일 참조 파일을 하나의 디렉토리에 저장하여, 소스 파일 컴파일시 하나의 디렉토리만을 참조하여 컴파일을 수행함으로서, 전체 컴파일 속도를 향상시킬 수 있다. 이는 종래에 소스 파일을 컴파일 할 때 마다 관련된 모든 디렉토리를 검색하는 과정을 생략할 수 있기 때문이다.
본 발명은 소스 파일의 개수나 컴파일시 참조하는 컴파일 참조 파일이 존재하는 디렉토리의 수가 많아질수록 더 큰 효과를 발생시킬 수 있다. 예를 들어, 컴파일 해야할 소스 파일의 개수가 2300개이고, 참조 디렉토리의 수가 200개인 경우, 종래의 방식에 따라 컴파일을 수행할 때보다 약 250% 정도 처리 속도가 향상된다. 상기와 같은 조건에서 디버그 옵션을 적용시키지 않았을 때 종래의 방식에 따라 컴파일을 수행하면 한 시간 삼십분 정도의 시간이 소요되는 것에 비하여, 본 발명에 따라 컴파일을 수행하면 삼십오분 정도의 시간이 소요된다. 그리고 디버그 옵션을 적용시키고 때 종래의 방식에 따라 컴파일을 수행하면 두 시간 삼십 분 정도의 시간이 소요되었던것에 비하여, 본 발명에 따라 컴파일을 수행하면 한 시간 십 분정도의 시간이 소요된다.
이와 같이 본 발명에 따라 컴파일을 수행하면 컴파일 소요 시간이 감소된다.
상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시할 수 있다. 따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위의 균등한 것에 의해 정해 져야 한다.
상술한 바와 같이 본 발명은 다수의 서로 다른 디렉토리에 존재하는, 다수의 소스 파일의 컴파일에 필요한 컴파일 참조 파일을 하나의 디렉토리에 저장하여, 소스 파일 컴파일시 하나의 디렉토리만을 참조하여 컴파일을 수행함으로서, 전체 컴파일 속도를 향상시킬 수 있다.
Claims (4)
- 컴파일 장치의 컴파일 방법에 있어서,수행명령을 받은 임의의 프로그램과 관련된 다수의 소스 파일을 검색하는 과정과,상기 다수의 소스 파일 컴파일시 참조할 컴파일 참조 파일이 존재하는 다수개의 디렉토리를 검색하는 과정과,상기 검색된 다수의 디렉토리에 대응하여 저장된 다수의 컴파일 참조 파일을 하나의 디렉토리에 저장하는 과정과,상기 다수의 소스 파일을 상기 하나의 디렉토리를 참조하여 컴파일하는 과정을 구비함을 특징으로 하는 방법.
- 컴파일 장치의 컴파일 방법에 있어서,수행명령을 받은 임의의 프로그램과 관련된 다수의 소스 파일을 검색하는 과정과,미리 저장된 makefile의 인크루드 패스 정보를 참조하여 상기 다수의 소스 파일 컴파일시 참조할 컴파일 참조 파일이 존재하는 다수개의 디렉토리를 검색하는 과정과,상기 검색된 다수의 디렉토리에 대응하여 저장된 다수의 컴파일 참조 파일을 검출하는 과정과,상기 검출된 다수의 컴파일 참조 파일을 패스트헤더 데이터로 생성하는 과정과,상기 패스트 헤더 데이터를 임의의 디렉토리에 저장하는 과정과,상기 다수의 소스 파일을 상기 임의의 디렉토리를 참조하여 컴파일하는 과정을 구비함을 특징으로 하는 방법.
- 컴파일 장치에 있어서,입력되는 명령에 따라 임의의 프로그램을 수행에 따른 동작 과정을 제어하고, 상기 프로그램 수행시 필요한 컴파일 과정을 제어하는 제어부와,상기 제어부의 제어하에, 상기 임의의 프로그램 수행에 따른 컴파일 요구 발생시, 상기 임의의 프로그램과 관련된 다수의 소스 파일을 검색하고, 상기 다수의 소스 파일 컴파일시 참조할 컴파일 참조 파일이 존재하는 다수의 참조 디렉토리를 검색하여 상기 컴파일 참조 파일을 검출하여 임의의 디렉토리에 저장하고, 상기 다수의 소스 파일을 상기 임의의 디렉토리를 참조하여 컴파일하는 컴파일러와,상기 임의의 프로그램 데이터와, 상기 다수의 소스 파일과, 상기 다수의 참조 디렉토리와, 상기 임의의 디렉토리를 저장하는 메모리를 구비함을 특징으로 하는 장치.
- 제3항에 있어서, 상기 컴파일러는 미리 저장된 makefile의 인크루드 패스 정보를 참조하여 상기 다수개의 참조 디렉토리를 검색함을 특징으로 하는 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050015996A KR101317009B1 (ko) | 2005-02-25 | 2005-02-25 | 개선된 컴파일 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050015996A KR101317009B1 (ko) | 2005-02-25 | 2005-02-25 | 개선된 컴파일 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060095091A true KR20060095091A (ko) | 2006-08-30 |
KR101317009B1 KR101317009B1 (ko) | 2013-10-11 |
Family
ID=37602661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050015996A KR101317009B1 (ko) | 2005-02-25 | 2005-02-25 | 개선된 컴파일 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101317009B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101522881B1 (ko) * | 2008-06-12 | 2015-05-26 | 엘지전자 주식회사 | 분산 컴파일 시스템 및 방법 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1300757A1 (en) | 2001-10-02 | 2003-04-09 | Sun Microsystems, Inc. | Shareable installation hierarchies |
KR20060092728A (ko) * | 2005-02-18 | 2006-08-23 | 엘지전자 주식회사 | 프리-프로세스에서 파일 검색 시간 단축을 통한 컴파일러의컴파일 속도 향상 방법 |
-
2005
- 2005-02-25 KR KR1020050015996A patent/KR101317009B1/ko not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101522881B1 (ko) * | 2008-06-12 | 2015-05-26 | 엘지전자 주식회사 | 분산 컴파일 시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR101317009B1 (ko) | 2013-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9274771B1 (en) | Automated adaptive compiler optimization | |
CA2672337C (en) | Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis | |
US8522220B2 (en) | Post-pass binary adaptation for software-based speculative precomputation | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
US5966539A (en) | Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis | |
US6973644B2 (en) | Program interpreter | |
US5606697A (en) | Compiler system for language processing program | |
US9672133B2 (en) | Systems and methods for debugging applications using dual code generation | |
US6253373B1 (en) | Tracking loop entry and exit points in a compiler | |
JP2013504124A (ja) | 軽量サービスベースの動的バイナリリライタフレームワーク | |
JP2010079894A (ja) | トレース操作の修正によるトレースのオーバーヘッドの削減 | |
CN112882718B (zh) | 编译处理方法、装置、设备及存储介质 | |
US20040015918A1 (en) | Program optimization method and compiler using the program optimization method | |
Duesterwald | Design and engineering of a dynamic binary optimizer | |
Sathyanathan et al. | Incremental whole program optimization and compilation | |
KR101317009B1 (ko) | 개선된 컴파일 방법 및 장치 | |
KR100597414B1 (ko) | 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법 | |
US7774767B2 (en) | System and method for compiler interprocedural optimization having support for object files in libraries | |
US6976247B1 (en) | Generating an executable file | |
JP2008071128A (ja) | プリフェッチ制御方法及びコンパイル装置 | |
US10140135B2 (en) | Method for executing a computer program with a parameterised function | |
EP1821210A2 (en) | Method of calling a method in virtual machine environment and system including a virtual machine processing the method | |
WO2002065284A1 (en) | An optimized dynamic bytecode interpreter | |
JP2024118113A (ja) | コンパイラ依存性抽出装置およびソースコード解析システム | |
JP2003337709A (ja) | コンパイル方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B601 | Maintenance of original decision after re-examination before a trial | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20120305 Effective date: 20130731 |
|
S901 | Examination by remand of revocation | ||
GRNO | Decision to grant (after opposition) | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |