KR102159640B1 - 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체 - Google Patents

데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체 Download PDF

Info

Publication number
KR102159640B1
KR102159640B1 KR1020187031626A KR20187031626A KR102159640B1 KR 102159640 B1 KR102159640 B1 KR 102159640B1 KR 1020187031626 A KR1020187031626 A KR 1020187031626A KR 20187031626 A KR20187031626 A KR 20187031626A KR 102159640 B1 KR102159640 B1 KR 102159640B1
Authority
KR
South Korea
Prior art keywords
file
compiled
files
compilation
initial class
Prior art date
Application number
KR1020187031626A
Other languages
English (en)
Other versions
KR20190095103A (ko
Inventor
샤오롱 챠오
Original Assignee
베이징 엘렉스 테크놀로지 씨오., 엘티디.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 엘렉스 테크놀로지 씨오., 엘티디. filed Critical 베이징 엘렉스 테크놀로지 씨오., 엘티디.
Publication of KR20190095103A publication Critical patent/KR20190095103A/ko
Application granted granted Critical
Publication of KR102159640B1 publication Critical patent/KR102159640B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명의 실시예는 정보처리 기술분야에 속하며, 데이터 컴파일 시간을 일정 정도로 줄일 수 있는 데이터 컴파일 방법을 제공한다. 상기 방법은, 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계; 모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하는 단계; 상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계를 포함한다. 본 발명의 실시예는 컴퓨터 프로그램 아이템의 컴파일 프로세스에 적용된다.

Description

데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체
본 발명은 정보처리 기술분야에 관한 것이며, 특히 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체에 관한 것이다.
C++ 언어는 다양한 시스템 소프트웨어, 예를 들어 운영 시스템, 내장형 시스템 등의 개발에 널리 이용되고 있다. 전형적인 컴파일 아키텍처에서 컴파일 프로세스는 통상적으로 분할된다. C++의 컴파일 프로세스 기본적으로 컴파일 예비처리, 컴파일 최적화 단계, 어셈블리 프로세스와 링크 프로세스로 분할된다. C++ 프로그램의 규모와 복잡도가 끊임없이 증가함에 따라, C++ 프로그램에서 컴파일이 필요한 파일도 점점 증가하고, 이에 따라 컴파일 유닛도 점점 증가한다. 서로 다른 컴파일 유닛이 각각 독립적으로 컴파일해야 하므로, 각각의 컴파일 유닛에 사용되는 프로그램과 컴파일되는 파일은 모두 전술한 4개 컴파일 절차를 끊임없이 중복 실행해야 하며, 이러한 컴파일 프로세스는 많은 시간이 소요된다.
이를 감안하여, 본 발명의 실시예는 데이터 컴파일 시간을 일정 정도로 줄일 수 있는 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체를 제공한다.
제1 측면에서 본 발명의 실시예는 데이터 컴파일 방법을 제공한다. 상기 방법은,
컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계;
모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하는 단계;
상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계를 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서, 상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계는,
상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득하는 단계;
모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 하는 단계를 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서, 상기 초기 클래스 파일은 헤더 파일 및/또는 소스 파일을 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서, 상술한 상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계는,
상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성하는 단계;
상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻는 단계를 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서, 상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계 전에,
상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득하는 단계;
동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당하는 단계를 더 포함한다.
제2 측면에서 본 발명의 실시예는 데이터 컴파일 장치를 제공한다. 상기 장치는,
컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻기 위한 트래버싱 유닛;
모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하기 위한 임포팅 유닛;
상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻기 위한 컴파일 유닛을 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서, 상기 트래버싱 유닛은,
상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득하기 위한 획득 모듈;
모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 하기 위한 필터링 모듈을 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서 상기 초기 클래스 파일은 헤더 파일 및/또는 소스 파일을 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서 상기 컴파일 유닛은,
상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성하기 위한 생성 모듈;
상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻기 위한 패키징 모듈을 포함한다.
상기와 같은 측면과 임의의 가능한 구현 형태는 하나의 구현 형태를 더 제공한다. 당해 구현 형태에서 상기 장치는,
상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득하기 위한 획득 유닛;
동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당하기 위한 할당 유닛을 더 포함한다.
제3 측면에서 본 발명의 실시예는 전자 기기를 제공한다. 상기 전자 기기는 프로세서, 메모리, 통신 인터페이스, 버스를 포함하고, 상기 메모리는 컴퓨터 실행 명령을 저장하기 위한 것이며, 상기 프로세서는 상기 버스를 통해 상기 메모리와 연결되고, 상기 서버가 동작할 때, 상기 프로세서는 상기 메모리에 저장된 컴퓨터 실행 명령을 실행하여 상기 서버로 하여금 제1 측면의 각 실시 형태에 따른 방법의 단계를 실행하도록 한다.
제4 측면에서 본 발명의 실시예는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체를 제공한다. 상기 프로그램이 프로세서에 의해 실행될 때 제1 측면의 각 실시 형태에 따른 방법의 단계를 구현한다.
본 발명의 실시예에 따른 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체는, 컴파일 하고자 하는 아이템 중 대량의 초기 클래스 파일을 소수의 중간 클래스 파일에 통합하고, 소수의 중간 클래스 파일에 대해서만 컴파일을 진행한다. 종래기술에서 초기 클래스 파일 각각에 대해 1회의 컴파일 프로세스를 진행해야 하는 것에 비해, 본 발명의 실시예에 따른 기술적 수단은 비록 하나의 클래스 파일에 포함된 내용은 증가하나, 컴파일이 필요한 클래스 파일의 수는 효과적으로 감소된다. 따라서 컴파일 유닛의 수를 효과적으로 줄여, 컴파일하고자 하는 아이템 전체의 컴파일 시간을 일정 정도로 줄일 수 있다.
본 발명의 실시예에 따른 기술적 수단을 더 명료하게 설명하기 위해, 이하 실시예에서 사용될 도면을 간단히 안내한다. 자명한 것은, 이하 설명에서의 도면은 본 발명의 일부 실시예일 뿐이며, 본 분야의 통상의 기술자는 창조적 노동을 하지 않고도 이들 도면을 토대로 다른 도면을 얻을 수도 있다.
도 1은 본 발명의 실시예에 따른 데이터 컴파일 방법의 흐름도이며,
도 2는 본 발명의 실시예에 따른 또 다른 데이터 컴파일 방법의 흐름도이며,
도 3은 본 발명의 실시예에 따른 또 다른 데이터 컴파일 방법의 흐름도이며,
도 4는 본 발명의 실시예에 따른 또 다른 데이터 컴파일 방법의 흐름도이며,
도 5는 본 발명의 실시예에 따른 데이터 컴파일 장치의 구성 블록도이며,
도 6은 본 발명의 실시예에 따른 또 다른 데이터 컴파일 장치의 구성 블록도이며,
도 7은 본 발명의 실시예에 따른 또 다른 데이터 컴파일 장치의 구성 블록도이며,
도 8은 본 발명의 실시예에 따른 또 다른 데이터 컴파일 장치의 구성 블록도이며,
도 9는 본 발명의 실시예에 따른 전자 기기의 구성 블록도이다.
본 발명의 기술적 수단을 더 잘 이해하도록 하기 위해 이하 도면을 결부하여 본 발명의 실시예를 상세히 설명한다.
설명되는 실시예는 본 발명의 일부 실시예일 뿐 전체 실시예가 아님을 이해해야 한다. 본 발명의 실시예를 기초로 본 분야의 통상의 기술자가 창조적 노동을 하지 않고 얻는 그밖의 모든 실시예는 모두 본 발명의 보호 범위에 속한다.
본 발명의 실시예에서 사용된 용어는 특정 실시예를 설명하기 위한 목적으로 이용될 뿐 본 발명을 한정하기 위한 것은 아니다. 본 발명의 실시예와 후술되는 특허청구범위에서 사용되는 단수 형태의 '하나의', '상기', '당해'도 문맥상 다른 뜻을 명확하게 나타내지 않는 한, 복수 형태를 포함한다.
본 명세서에서 사용된 용어 '와/또는'은 관련 대상의 관련 관계를 설명하기 위한 것일 뿐이며, 3가지 관계가 존재할 수 있음을 나타냄을 이해해야 한다. 예를 들어 A와/또는 B는, A가 단독으로 존재하는 경우, A와 B가 동시에 존재하는 경우, B가 단독으로 존재하는 경우, 이들 3가지 경우를 나타낼 수 있다. 또한, 본 명세서에서 부호 '/'는 일반적으로 앞뒤의 관련 대상이 '또는'의 관계를 가짐을 나타낸다.
비록 본 발명의 실시예에서 용어 제1, 제2, 제3 등을 이용하여 XXX를 설명할 수 있으나, 이들 XXX는 이들 용어에 한정되지 않음을 이해해야 한다. 이들 용어는 XXX를 서로 구분하기 위한 것일 뿐이다. 예를 들어, 본 발명의 실시예의 범위를 벗어나지 않는 상황에서 제1 XXX는 제2 XXX로 부를 수도 있다. 이와 유사하게 제2 XXX는 제1 XXX로 부를 수도 있다.
언어 환경에 따라 여기서 사용된 단어 '만약'은 '......는 경우' 또는 '......때' 또는 '확정함에 응답하여' 또는 '검출에 응답하여'로 해석될 수도 있다. 이와 유사하게, 언어 환경에 따라, 구(
Figure 112018107796418-pct00001
) '만약 확정되면' 또는 '만약 (기술되는 조건 또는 이벤트)가 검출되면'은 '확정되는 경우' 또는 '확정됨에 응답하여' 또는 '(기술되는 조건 또는 이벤트)가 검출된 경우' 또는 '(기술되는 조건 또는 이벤트)가 검출됨에 응답하여'로 해석될 수도 있다.
본 발명의 실시예는 데이터 컴파일 방법을 제공한다. 도 1과 같이 상기 방법은 아래 단계를 포함한다.
101: 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는다.
여기서, 하나의 컴파일 하고자 하는 아이템(project)은 실제 컴파일이 필요한 파일 수가 방대할 수 있다. 본 발명의 실시예는 각 유형의 컴파일되는 파일을 일괄적으로 중간 클래스 파일에 임포팅해야 하므로, 트래버싱과 필터링 프로세서를 거쳐, 컴파일 하고자 하는 아이템 중의 컴파일되는 모든 클래스 파일을 취합해야 한다.
초기 클래스 파일은 일반적으로 헤더 파일(.h), 소스 파일(.cpp) 및 그밖의 다른 존재할 수 있는 파일 유형을 포함할 수 있다.
102: 모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅한다.
여기서, 중간 클래스 파일은 본 발명의 실시예에서 독립적으로 구성된 클래스 파일이다. 이는 상기 초기 클래스 파일과 동일한 파일 포맷을 이용할 수 있으며, 실제 필요에 따라 독립적인 파일 포맷을 구성할 수도 있다.
본 발명의 실시예에서, 중간 클래스 파일의 수는 하나 또는 몇 개만 설정해도 된다. 이와 같이 설정하면 컴파일 유닛의 수가 크게 감소할 수 있다. 또한 모든 초기 클래스 파일의 컨텐츠를 모두 소수의 몇 개 중간 클래스 파일에 포함시킬 수 있으므로, 컴파일 하고자 하는 아이템이 구비한 기능은 영향을 받지 않는다.
103: 상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는다.
본 발명의 실시예에 따른 데이터 컴파일 방법은, 컴파일 하고자 하는 아이템 중 대량의 초기 클래스 파일을 소수의 중간 클래스 파일에 통합하고, 소수의 중간 클래스 파일에 대해서만 컴파일을 진행한다. 종래기술에서 초기 클래스 파일 각각에 대해 1회의 컴파일 프로세스를 진행해야 하는 것에 비해, 본 발명의 실시예에 따른 기술적 수단은 비록 하나의 클래스 파일에 포함된 내용은 증가하나, 컴파일이 필요한 클래스 파일의 수는 효과적으로 감소된다. 따라서 컴파일 유닛의 수를 효과적으로 줄여, 컴파일 하고자 하는 아이템 전체의 컴파일 시간을 일정 정도로 줄일 수 있다.
나아가, 본 발명의 실시예는 단계 101: 상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계의 구현에 대해 이하 방법 절차를 제공하며, 도 2와 같이 아래 단계를 포함한다.
1011: 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득한다.
파일 확장자는 파일 확장명이라고도 하며, 파일 유형을 표시하는 데 이용된다. 예를 들어 클래스 파일은 '.h', '.cpp' 등의 확장자를 이용할 수 있다.
확장자는 일반적으로 파일의 파일명 뒤에 위치한다. 따라서 키워드 매칭 방식으로 조회할 수 있다.
1012: 모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 한다.
기설정된 확장자 집합은 미리 설정된 키워드 집합이며, 컴파일 하고자 하는 아이템 중의 컴파일될 수 있는 각 클래스 파일의 확장자를 기록하기 위한 것이다. 이 집합에 포함되는 키워드는 실제 필요에 따라 증감시키고, 수정할 수 있다.
나아가, 본 발명의 실시예는 단계 103: 상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계의 구현에 대해 이하 방법 절차를 제공하며, 도 3과 같이 아래 단계를 포함한다.
1031: 상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성한다.
지정된 컴파일 규칙은 android.mk 파일의 수요에 따라 편집할 수 있다.
android.mk 파일은 일반적으로 컴파일 시스템에 대해 컴파일 하고자 하는 아이템의 소스 코드를 설명하기 위한 것이다. android.mk 파일이 한정한 지정된 컴파일 규칙은 이하 5개 유형의 대상을 컴파일할 수 있다.
1) APK 프로그램. 일반적인 Android 프로그램이며, 컴파일 및 패키징을 통해 apk 파일을 생성한다.
2) JAVA 라이브러리. java 클래스 라이브러리이며, 컴파일 및 패키징을 통해 jar 파일을 생성한다.
3) C\C++ 응용 프로그램. 실행 가능한 C\C++ 응용 프로그램이다.
4) C\C++ 정적 라이브러리. 컴파일을 통해 C\C++ 정적 라이브러리를 생성하고, 패키징을 통해 .a 파일을 생성한다.
5) C\C++ 공유 라이브러리. 컴파일을 통해 공유 라이브러리(동적 링크 라이브러리)를 생성하고, 패키징을 통해 .so을 생성한다. 공유 라이브러리를 구비하고 또한 공유 라이브러리만, 필요한 응용 소프트웨어(APK) 패킷에 설치/복제될 수 있다.
본 발명의 실시예에서는 APK 패키징에 편리하도록, 동적 라이브러리 파일(.so)을 생성할 필요가 있다.
1032: 상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻는다.
본 발명의 실시예에서는 ant 방식으로 패키징 할 수 있다.
한편, 중간 클래스 파일에 집중된 각각의 초기 클래스 파일이 컴파일될 때 오류가 발생하는 것을 피하기 위해, 각각의 초기 클래스 파일 중의 각각의 데이터 대상 식별자에 대해 미리 중복 여부를 확인한다. 구체적인 절차는 도 4와 같으며, 아래 단계를 포함한다.
104: 상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득한다.
상기 데이터 대상 식별자는, 초기 클래스 파일에서 사용된 매크로 정의, 및 클래스 외에 정의되고 다른 클래스에서 사용되는 열거, 구조체, 싱글톤 패턴 등 모든 변수를 포함할 수 있다.
여기서 설명해야 하는 바로는, 중복된 데이터 대상 식별자는 명칭이 서로 같으나 정의는 서로 다른 데이터 대상 식별자만을 가리킨다. 프로그램의 컴파일 시의 에러 위치 또는 그밖의 다른 체크 절차를 통해 각각의 중복된 데이터 대상 식별자를 포지셔닝할 수 있다.
105: 동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당한다.
본 발명의 실시예는 전술한 각 방법의 절차를 구현할 수 있는 데이터 컴파일 장치를 더 제공하며, 그 구성은 도 5와 같다. 상기 장치는,
컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻기 위한 트래버싱 유닛(21);
모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하기 위한 임포팅 유닛(22);
상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻기 위한 컴파일 유닛(23)을 포함한다.
선택적으로, 도 6과 같이 상기 트래버싱 유닛(21)은,
상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득하기 위한 획득 모듈(211);
모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 하기 위한 필터링 모듈(212)을 포함한다.
선택적으로, 상기 초기 클래스 파일은 헤더 파일 및/또는 소스 파일을 포함한다.
선택적으로, 도 7과 같이 상기 컴파일 유닛(23)은,
상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성하기 위한 생성 모듈(231);
상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻기 위한 패키징 모듈(232)을 포함한다.
선택적으로, 도 8과 같이 상기 장치는,
상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득하기 위한 획득 유닛(24);
동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당하기 위한 할당 유닛(25)을 더 포함한다.
본 발명의 실시예에 따른 데이터 컴파일 장치는, 컴파일 하고자 하는 아이템 중 대량의 초기 클래스 파일을 소수의 중간 클래스 파일에 통합하고, 소수의 중간 클래스 파일에 대해서만 컴파일을 진행한다. 종래기술에서 초기 클래스 파일 각각에 대해 1회의 컴파일 프로세스를 진행해야 하는 것에 비해, 본 발명의 실시예에 따른 기술적 수단은 비록 하나의 클래스 파일에 포함된 내용은 증가하나, 컴파일이 필요한 클래스 파일의 수는 효과적으로 감소된다. 따라서 컴파일 유닛의 수를 효과적으로 줄여, 컴파일 하고자 하는 아이템 전체의 컴파일 시간을 일정 정도로 줄일 수 있다.
본 발명의 실시예는 전자 기기(30)를 제공한다. 도 9에 나타낸 바와 같이, 전자기기(30)는 프로세서(31), 메모리(33), 통신 인터페이스(34) 및 버스(32)를 포함한다. 상기 메모리는 컴퓨터 실행 명령을 저장하기 위한 것이며, 상기 프로세서는 상기 버스를 통해 상기 메모리와 연결된다.
프로세서(31)는 하나의 범용 중앙 프로세서(central processing unit, CPU), 마이크로 프로세서, 응용 주문형 집적회로(application-specific integrated circuit, ASIC), 또는 하나 또는 다수의 본 출원에 따른 프로그램의 실행을 제어하기 위한 집적회로일 수 있다.
통신 버스(32)는 상기 어셈블리 간에 정보를 전송하는 채널을 포함할 수 있다.
통신 인터페이스(34)는 송수신기와 같은 임의의 장치를 사용하며, 다른 기기 또는 통신 네트워크, 예를 들어 이더넷, 무선접속망(radio access network, RAN), 무선랜(wireless local area networks, WLAN) 등과 통신하기 위한 것이다.
메모리(33)는 롬(read-only memory, ROM) 또는 정적 정보와 명령을 저장할 수 있는 그밖의 다른 유형의 정적 저장 장치, 램(random access memory, RAM) 또는 정보와 명령을 저장할 수 있는 그밖의 다른 유형의 동적 저장 장치일 수 있으며, 이이피롬(electrically erasable programmable read-only memory, EEPROM), 씨디롬(compact disc read-only memory, CD-ROM) 또는 그밖의 다른 광 디스크(
Figure 112018107796418-pct00002
) 저장소, CD(
Figure 112018107796418-pct00003
) 저장소(압축 CD, 레이저 CD, CD, 디지털 범용 CD, 블루레이 CD 등을 포함), 자기 디스크 저장 매체 또는 그밖의 다른 마그넷 저장 장치, 또는 명령 또는 데이터 구조 형태를 가진 소망하는 프로그램을 담거나 저장할 수 있고 컴퓨터가 저장 및 인출할 수 있는 그밖의 다른 임의의 매체일 수도 있으나, 이에 한정되지 않는다. 메모리는 독립적으로 존재하여 버스를 통해 프로세서와 연결될 수 있다. 메모리는 프로세서와 하나로 집적될 수도 있다.
여기서, 메모리(33)는 본 출원에 따른 기술적 수단을 실행하는 응용 프로그램 코드를 저장하고, 프로세서(31)가 실행을 제어한다. 프로세서(31)는 메모리(33)에 저장된 응용 프로그램 코드를 실행하며, 상기 서버가 동작할 때, 상기 프로세서(31)는 상기 메모리(33)에 저장된 컴퓨터 실행 명령을 실행하여 상기 서버로 하여금 아래 절차 즉,
컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계;
모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하는 단계;
상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계를 실행할 수 있도록 한다.
선택적으로, 상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계는 구체적으로,
상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득하는 단계;
모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 하는 단계로 실행될 수 있다.
선택적으로, 상기 초기 클래스 파일은 헤더 파일 및/또는 소스 파일을 포함한다.
선택적으로, 상술한 상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계는 구체적으로,
상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성하는 단계;
상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻는 단계로 실행될 수 있다.
선택적으로, 상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계 전에, 상기 프로세서는 구체적으로,
상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득하는 단계;
동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당하는 단계를 더 실행할 수 있다.
본 발명의 실시예에 따른 전자 기기는, 컴파일 하고자 하는 아이템 중 대량의 초기 클래스 파일을 소수의 중간 클래스 파일에 통합하고, 소수의 중간 클래스 파일에 대해서만 컴파일을 진행한다. 종래기술에서 초기 클래스 파일 각각에 대해 1회의 컴파일 프로세스를 진행해야 하는 것에 비해, 본 발명의 실시예에 따른 기술적 수단은 비록 하나의 클래스 파일에 포함된 내용은 증가하나, 컴파일이 필요한 클래스 파일의 수는 효과적으로 감소된다. 따라서 컴파일 유닛의 수를 효과적으로 줄여, 컴파일 하고자 하는 아이템 전체의 컴파일 시간을 일정 정도로 줄일 수 있다.
본 발명의 실시예는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체를 더 제공하며, 상기 프로그램이 프로세서에 의해 실행될 때 아래와 같은 방법의 단계 즉,
컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계;
모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하는 단계;
상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계를 구현한다.
선택적으로, 상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계는 구체적으로,
상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득하는 단계;
모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 하는 단계로 실행될 수 있다.
선택적으로, 상기 초기 클래스 파일은 헤더 파일 및/또는 소스 파일을 포함한다.
선택적으로, 상술한 상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계는 구체적으로,
상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성하는 단계;
상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻는 단계로 실행될 수 있다.
선택적으로, 상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계 전에, 상기 프로세서는 구체적으로,
상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득하는 단계;
동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당하는 단계를 더 실행할 수 있다.
본 발명의 실시예에 따른 컴퓨터 판독 가능 매체는, 컴파일 하고자 하는 아이템 중 대량의 초기 클래스 파일을 소수의 중간 클래스 파일에 통합하고, 소수의 중간 클래스 파일에 대해서만 컴파일을 진행한다. 종래기술에서 초기 클래스 파일 각각에 대해 1회의 컴파일 프로세스를 진행해야 하는 것에 비해, 본 발명의 실시예에 따른 기술적 수단은 비록 하나의 클래스 파일에 포함된 내용은 증가하나, 컴파일이 필요한 클래스 파일의 수는 효과적으로 감소된다. 따라서 컴파일 유닛의 수를 효과적으로 줄여, 컴파일 하고자 하는 아이템 전체의 컴파일 시간을 일정 정도로 줄일 수 있다.
본 발명이 속한 기술 분야의 통상의 기술자는 설명의 편의와 간결함을 위해 상기 설명된 시스템, 장치와 유닛의 구체적인 작동 과정에 대해 전술한 방법 실시예 중의 대응된 과정을 참고할 수 있음을 이해할 수 있으므로, 여기서 더 이상 설명하지 않는다.
본 발명에 따른 몇몇 실시예에서 공개된 시스템, 장치와 방법을 그밖의 다른 방식으로 구현할 수 있음을 이해할 것이다. 예를 들어, 이상 설명한 장치 실시예는 예시적인 것일 뿐이다. 예를 들어, 상기 유닛의 분할은 하나의 로직 기능 상의 분할일 뿐이며, 실제 구현 시 다른 분할 방식이 있을 수 있다. 예를 들어, 다수의 유닛 또는 어셈블리를 다른 하나의 시스템에 집적할 수 있거나, 또는 일부 특징을 무시하거나 또는 실행하지 않을 수 있다. 다른 한편, 나타냈거나 또는 검토된 상호간의 커플링 또는 직접적인 커플링 또는 통신 연결은 일부 인터페이스, 장치 또는 유닛을 통한 간접적인 커플링 또는 통신 연결일 수 있으며, 전기적, 기계적, 또는 그밖의 다른 형태일 수 있다.
상기 분리 부재로서 설명된 유닛은 물리적으로 분리된 것일 수 있거나 그렇지 않을 수도 있다. 유닛으로 표시된 부재는 물리적 유닛일 수 있거나 또는 그렇지 않을 수도 있다. 즉 하나의 장소에 위치할 수 있거나 또는 다수의 네트워크 유닛에 분포될 수도 있다. 실제 필요에 따라 일부 또는 전체 유닛을 선택하여 본 실시예에 따른 기술적 수단의 목적을 구현할 수 있다.
한편, 본 발명의 각 실시예 중의 각 기능 유닛은 하나의 처리 유닛에 집적될 수 있으며, 각각의 유닛이 단독으로 물리적으로 존재할 수도 있으며, 2개 또는 2개 이상의 유닛이 하나의 유닛에 집적될 수도 있다. 상기 집적된 유닛은 하드웨어 형태로 구현될 수 있으며, 하드웨어와 소프트웨어 기능 유닛의 결합 형태로 구현될 수도 있다.
상기 소프트웨어 기능 유닛의 형태로 구현되어 집적된 유닛은 하나의 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 상기 소프트웨어 기능 유닛은 하나의 저장 매체에 저장되고, 하나의 컴퓨터 기기(개인 컴퓨터, 서버 또는 네트워크 장치 등일 수 있다)로 하여금 본 발명의 각 실시예에 따른 방법의 일부 단계를 수행하도록 하는 다수의 명령을 포함한다. 그리고 전술한 저장매체는 USB, 이동 디스크, 롬(ROM, Read-Only Memory), 램(RAM, Random Access Memory), 자기 디스크 또는 광 디스크 등의, 프로그램 코드를 저장할 수 있는 각종 매체를 포함한다.
이상은 본 발명의 바람직한 실시 형태일 뿐이며, 본 발명을 한정하지 않는다. 본 발명의 사상과 원칙 내에서 진행한 임의의 수정, 균등 교체, 개량 등은 모두 본 발명의 보호 범위에 포함되어야 할 것이다.

Claims (12)

  1. 데이터 컴파일 방법에 있어서,
    상기 방법은,
    컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계;
    모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하는 단계;
    상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계를 포함하는 것을 특징으로 하는 데이터 컴파일 방법.
  2. 제1 항에 있어서,
    상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계는,
    상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득하는 단계;
    모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 하는 단계를 포함하는 것을 특징으로 하는 데이터 컴파일 방법.
  3. 제2 항에 있어서,
    상기 초기 클래스 파일은 헤더 파일 및/또는 소스 파일을 포함하는 것을 특징으로 하는 데이터 컴파일 방법.
  4. 제1 항에 있어서,
    상술한 상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻는 단계는,
    상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성하는 단계;
    상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻는 단계를 포함하는 것을 특징으로 하는 데이터 컴파일 방법.
  5. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    상술한 상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻는 단계 전에,
    상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득하는 단계;
    동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당하는 단계를 더 포함하는 것을 특징으로 하는 데이터 컴파일 방법.
  6. 데이터 컴파일 장치에 있어서,
    상기 장치는,
    컴파일 하고자 하는 아이템 내의 컴파일되는 파일을 트래버싱하여 모든 초기 클래스 파일을 얻기 위한 트래버싱 유닛;
    모든 상기 초기 클래스 파일을, 상기 초기 클래스 파일의 전체 수보다 작은 지정 수를 가진 중간 클래스 파일에 임포팅하기 위한 임포팅 유닛;
    상기 중간 클래스 파일을 컴파일하여 타겟 데이터를 얻기 위한 컴파일 유닛을 포함하는 것을 특징으로 하는 데이터 컴파일 장치.
  7. 제6 항에 있어서,
    상기 트래버싱 유닛은,
    상기 컴파일 하고자 하는 아이템 내의 컴파일되는 파일 각각에 대응된 파일 확장자를 획득하기 위한 획득 모듈;
    모든 컴파일되는 파일로부터, 기설정된 확장자 집합 속의 파일 확장자를 가진 파일을 필터링하여 상기 초기 클래스 파일로 하기 위한 필터링 모듈을 포함하는 것을 특징으로 하는 데이터 컴파일 장치.
  8. 제7 항에 있어서,
    상기 초기 클래스 파일은 헤더 파일 및/또는 소스 파일을 포함하는 것을 특징으로 하는 데이터 컴파일 장치.
  9. 제6 항에 있어서,
    상기 컴파일 유닛은,
    상기 중간 클래스 파일에 대해, 지정된 컴파일 규칙에 따라 동적 라이브러리 파일을 생성하기 위한 생성 모듈;
    상기 동적 라이브러리 파일에 대해 패키징 처리하여 상기 타겟 데이터를 얻기 위한 패키징 모듈을 포함하는 것을 특징으로 하는 데이터 컴파일 장치.
  10. 제6 항 내지 제9 항 중 어느 한 항에 있어서,
    상기 장치는,
    상기 컴파일 하고자 하는 아이템 중의 중복된 데이터 대상 식별자를 획득하기 위한 획득 유닛;
    동일 하나의 데이터 대상 식별자를 가진 각각의 데이터 대상에 각각 고유 식별자를 다시 할당하기 위한 할당 유닛을 더 포함하는 것을 특징으로 하는 데이터 컴파일 장치.
  11. 전자 기기에 있어서,
    프로세서, 메모리, 통신 인터페이스, 버스를 포함하고,
    상기 메모리는 컴퓨터 실행 명령을 저장하기 위한 것이며,
    상기 프로세서는 상기 버스를 통해 상기 메모리와 연결되고, 서버가 동작할 때, 상기 프로세서는 상기 메모리에 저장된 컴퓨터 실행 명령을 실행하여 상기 서버로 하여금 제1 항 내지 제4 항 중 어느 한 항에 따른 방법의 단계를 실행하도록 하는 것을 특징으로 하는 전자 기기.
  12. 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 프로그램이 프로세서에 의해 실행될 때 제1 항 내지 제4 항 중 어느 한 항에 따른 방법의 단계를 구현하는 것을 특징으로 하는 컴퓨터 판독 가능 저장 매체.
KR1020187031626A 2018-02-05 2018-08-21 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체 KR102159640B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810113382.7A CN110119274A (zh) 2018-02-05 2018-02-05 一种数据编译的方法、装置以及电子终端、计算机可读存储介质
CN201810113382.7 2018-02-05
PCT/CN2018/101463 WO2019148816A1 (en) 2018-02-05 2018-08-21 Method and apparatus for data compilation, electronic device and computer readable storage medium

Publications (2)

Publication Number Publication Date
KR20190095103A KR20190095103A (ko) 2019-08-14
KR102159640B1 true KR102159640B1 (ko) 2020-09-28

Family

ID=67479553

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187031626A KR102159640B1 (ko) 2018-02-05 2018-08-21 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체

Country Status (6)

Country Link
US (1) US11231916B2 (ko)
EP (1) EP3676702A4 (ko)
JP (1) JP6780020B2 (ko)
KR (1) KR102159640B1 (ko)
CN (1) CN110119274A (ko)
WO (1) WO2019148816A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750545B (zh) * 2019-09-03 2023-07-25 抖音视界有限公司 动态库热更新方法、装置、介质和设备
CN111984264B (zh) * 2020-07-24 2021-11-16 五八有限公司 一种静态库的生成方法和装置
CN112114814A (zh) * 2020-09-22 2020-12-22 北京达佳互联信息技术有限公司 编译文件确定方法及装置、应用程序生成方法及装置
CN112199094B (zh) * 2020-10-23 2024-05-28 瑞庭网络技术(上海)有限公司 信息展示方法、装置、电子设备和计算机可读介质
CN112527306B (zh) * 2020-10-27 2024-05-28 百果园技术(新加坡)有限公司 项目开发中模块的独立化实现方法、装置、设备及介质
CN113031962B (zh) * 2021-03-23 2022-04-15 北京百度网讯科技有限公司 编译方法、编译装置、电子设备、存储介质和程序产品
CN113157651B (zh) * 2021-03-23 2024-02-20 广州宸祺出行科技有限公司 一种安卓工程项目的资源文件批量重命名的方法、系统、设备和介质
CN113553301A (zh) * 2021-06-24 2021-10-26 网易(杭州)网络有限公司 头文件的处理方法、装置、计算机可读存储介质和处理器
CN114461216B (zh) * 2021-12-22 2022-11-11 科东(广州)软件科技有限公司 一种文件编译方法、装置、电子设备及存储介质
CN117130618A (zh) * 2023-06-13 2023-11-28 东信和平科技股份有限公司 智能卡可执行文件的增量编译方法、装置、设备

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966702A (en) 1997-10-31 1999-10-12 Sun Microsystems, Inc. Method and apparatus for pre-processing and packaging class files
US7080370B1 (en) * 1999-11-05 2006-07-18 Sun Microsystems, Inc. Method and apparatus for compiling source programs using one or more libraries
US6804682B1 (en) * 2002-04-29 2004-10-12 Borland Software Corporation System and methodology providing compiler-assisted refactoring
US7356813B2 (en) * 2002-09-26 2008-04-08 Hewlett-Packard Development Company, L.P. System and method for optimizing a program
JP3992102B2 (ja) * 2003-06-04 2007-10-17 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体
KR100654428B1 (ko) * 2004-01-14 2006-12-06 삼성전자주식회사 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
US7509633B2 (en) * 2004-12-16 2009-03-24 International Business Machines Corporation System and method for grid-based distribution of Java project compilation
KR20060092728A (ko) * 2005-02-18 2006-08-23 엘지전자 주식회사 프리-프로세스에서 파일 검색 시간 단축을 통한 컴파일러의컴파일 속도 향상 방법
US7844960B2 (en) * 2005-09-14 2010-11-30 International Business Machines Corporation Optimizing software program execution during class loading phase
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US8250559B2 (en) * 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
US8875113B2 (en) * 2006-05-04 2014-10-28 Oracle International Corporation Managing JAVA class paths
US7827525B1 (en) * 2006-06-02 2010-11-02 Richard Paul Navaro Data object utilization in software applications
US8082542B2 (en) * 2006-10-04 2011-12-20 International Business Machines Corporation Load time in-lining of subroutines
US8555266B2 (en) * 2007-11-13 2013-10-08 International Business Machines Corporation Managing variable assignments in a program
CN101771762B (zh) 2009-01-06 2012-03-21 北京邮电大学 业务系统中业务动态加载系统及方法
US8789032B1 (en) * 2009-02-27 2014-07-22 Google Inc. Feedback-directed inter-procedural optimization
US8458681B1 (en) * 2009-06-30 2013-06-04 Google Inc. Method and system for optimizing the object code of a program
US8473900B2 (en) * 2009-07-01 2013-06-25 Advanced Micro Devices, Inc. Combining classes referenced by immutable classes into a single synthetic class
US20110010696A1 (en) * 2009-07-09 2011-01-13 Sun Microsystems, Inc. Duplicate virtual function table removal
CA2675686C (en) * 2009-08-27 2011-10-11 Ibm Canada Limited - Ibm Canada Limitee Object collocation
US8938728B2 (en) * 2010-04-05 2015-01-20 International Business Machines Corporation Dynamic compiler program, dynamic compiling method and dynamic compiling device
JP5460430B2 (ja) * 2010-04-05 2014-04-02 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置
CN101968736A (zh) * 2010-09-13 2011-02-09 杭州元睿信息技术有限公司 一种应用于Java到C++语言程序翻译中外部引用的翻译方法
CN102207884A (zh) * 2011-06-02 2011-10-05 深圳市茁壮网络股份有限公司 一种文件编译方法及装置
US8954942B2 (en) * 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
KR101349631B1 (ko) * 2011-12-07 2014-01-09 한국과학기술연구원 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체
US9164743B2 (en) * 2012-07-02 2015-10-20 International Business Machines Corporation Strength reduction compiler optimizations for operations with unknown strides
EP2687981B1 (en) * 2012-07-18 2017-12-27 MStar Semiconductor, Inc. Automated compiler specialisation for global optimisation
US9081583B2 (en) * 2012-08-23 2015-07-14 National Instruments Corporation Compile time execution
US9052888B2 (en) * 2013-02-21 2015-06-09 International Business Machines Corporation Vectorization in an optimizing compiler
US9558096B2 (en) * 2014-03-21 2017-01-31 Marvell World Trade Ltd. Method and apparatus for supporting performance analysis
US9910680B2 (en) * 2014-04-22 2018-03-06 Oracle International Corporation Decomposing a generic class into layers
US10261764B2 (en) * 2014-05-13 2019-04-16 Oracle International Corporation Handling value types
CN105335286B (zh) * 2014-08-15 2018-02-16 阿里巴巴集团控股有限公司 一种静态库测试方法及装置
US10324741B2 (en) * 2014-08-30 2019-06-18 Oracle International Corporation Speeding up dynamic language execution on a virtual machine with type speculation
CN105404794B (zh) 2014-09-04 2019-09-20 腾讯科技(深圳)有限公司 Java应用软件的保护方法和装置
US10067750B2 (en) * 2015-02-23 2018-09-04 Qualcomm Incorporated Whole-program optimization using data from previous compilation runs
US9430200B1 (en) * 2015-06-04 2016-08-30 Microsoft Technology Licensing Llc Cross-library framework architecture feature sets
US9880821B2 (en) * 2015-08-17 2018-01-30 International Business Machines Corporation Compiler optimizations for vector operations that are reformatting-resistant
US10061571B2 (en) * 2015-11-16 2018-08-28 Qualcomm Innovation Center, Inc. System and method for link time optimization
US9696973B1 (en) * 2016-02-24 2017-07-04 Semmle Limited Compilation cache with imports scanner
JP6980987B2 (ja) * 2016-05-12 2021-12-15 ブラザー工業株式会社 画像形成装置
US10228921B2 (en) * 2016-06-01 2019-03-12 International Business Machines Corporation Compiler that performs register promotion optimizations in regions of code where memory aliasing may occur
US10133560B2 (en) * 2016-09-22 2018-11-20 Qualcomm Innovation Center, Inc. Link time program optimization in presence of a linker script
JP6790869B2 (ja) * 2017-01-25 2020-11-25 富士通株式会社 コンパイル方法、コンパイルプログラム及び情報処理装置
CN106775781B (zh) * 2017-02-17 2021-04-27 北京金山安全软件有限公司 减小应用安装包的方法、装置及电子设备
CN107168749B (zh) * 2017-05-31 2022-11-29 腾讯科技(深圳)有限公司 一种编译方法、装置、设备和计算机可读存储介质
US10521208B2 (en) * 2017-06-23 2019-12-31 Microsoft Technology Licensing, Llc. Differentiated static analysis for dynamic code optimization
CN107506651B (zh) 2017-07-04 2021-10-22 环玺信息科技(上海)有限公司 一种代码加密方法及系统
US10303449B2 (en) * 2017-07-31 2019-05-28 Oracle International Corporation Compiling non-native constants
US10133561B1 (en) * 2017-08-30 2018-11-20 International Business Machines Corporation Partial redundancy elimination with a fixed number of temporaries

Also Published As

Publication number Publication date
JP6780020B2 (ja) 2020-11-04
KR20190095103A (ko) 2019-08-14
JP2020510888A (ja) 2020-04-09
WO2019148816A1 (en) 2019-08-08
CN110119274A (zh) 2019-08-13
EP3676702A1 (en) 2020-07-08
EP3676702A4 (en) 2020-11-04
US11231916B2 (en) 2022-01-25
US20200249922A1 (en) 2020-08-06

Similar Documents

Publication Publication Date Title
KR102159640B1 (ko) 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체
CN110414261B (zh) 一种数据脱敏方法、装置、设备及可读存储介质
US7096420B1 (en) Method and system for automatically documenting system command file tags and generating skeleton documentation content therefrom
CN111786959B (zh) 安全防护方法、waf系统、电子设备及存储介质
CN106506302B (zh) 支持动态modbus协议映射的通信装置
CN111124480B (zh) 应用程序包的生成方法、装置、电子设备及存储介质
CN114816761A (zh) 基于eBPF的云服务网格资源优化方法、系统及介质
CN116132139A (zh) 剧本执行方法、装置、设备、存储介质及程序产品
CN102916967B (zh) 协议解析的方法和装置
CN112835587B (zh) 一种编译集成方法及装置
CN108268266A (zh) 一种升级方法和装置
CN106484375B (zh) 一种指令块加载方法、软交换设备及系统
US10514908B2 (en) Program analysis device for classifying programs into program groups based on call relationship between programs, program analysis method for classifying programs into program groups based on call relationship between programs, and recording medium storing analysis program for classifying programs into program groups based on a call relationship between programs
CN109783133B (zh) 代码打包方法、装置、计算机设备及存储介质
CN114417347A (zh) 应用程序的漏洞检测方法、装置、设备、存储介质和程序
CN110597516B (zh) 插件化代码的混淆方法、装置、电子设备和存储介质
KR102119509B1 (ko) 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치
CN113138797A (zh) 面向Intel SGX的程序自动化移植系统
CN108780452A (zh) 一种存储过程处理方法及装置
CN112256324B (zh) 安卓应用程序构建过程中对文件的处理方法及装置
CN110737429A (zh) 一种利用Makefile自身的依赖关系的模块化编译方法和装置
CN112882720B (zh) 一种编译方法及装置
US20200050436A1 (en) Embedding of multiple versions in monolithic applications during compilation
CN117112542A (zh) 异常血缘关系的报警方法、装置及存储介质
CN118051254A (zh) 插件版本的检测方法及装置、存储介质和电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right