[go: up one dir, main page]

KR20250053420A - Method and apparatus for searching for optimal interpreter of high-level programming language - Google Patents

Method and apparatus for searching for optimal interpreter of high-level programming language Download PDF

Info

Publication number
KR20250053420A
KR20250053420A KR1020230136646A KR20230136646A KR20250053420A KR 20250053420 A KR20250053420 A KR 20250053420A KR 1020230136646 A KR1020230136646 A KR 1020230136646A KR 20230136646 A KR20230136646 A KR 20230136646A KR 20250053420 A KR20250053420 A KR 20250053420A
Authority
KR
South Korea
Prior art keywords
interpreter
source code
code
partial
partial source
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020230136646A
Other languages
Korean (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 에스케이텔레콤 주식회사
Priority to KR1020230136646A priority Critical patent/KR20250053420A/en
Publication of KR20250053420A publication Critical patent/KR20250053420A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3636Debugging of software by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3624Debugging of software by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3628Debugging of software of optimised code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3698Environments for analysis, debugging or testing of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

최적 인터프리터로 코드 실행환경을 제공하기 위한 방법 및 장치를 개시한다.
본 개시의 일 측면에 의하면, 최적 인터프리터로 코드 실행환경을 제공하기 위한 방법으로서, 소스 코드 및 사용자 요구사항을 입력받는 과정; 상기 소스 코드를 분리하여 적어도 하나의 부분 소스 코드를 획득하는 과정; 부분 소스 코드마다 상기 사용자 요구사항에 부합하는 인터프리터를 결정하는 과정; 및 부분 소스 코드별 결정된 인터프리터에 기초하여 상기 소스 코드를 실행하기 위한 가상 환경을 구축하는 과정을 포함하는 방법을 제공한다.
A method and device for providing a code execution environment with an optimal interpreter are disclosed.
According to one aspect of the present disclosure, a method for providing a code execution environment with an optimal interpreter is provided, comprising: a process of receiving source code and user requirements; a process of separating the source code to obtain at least one partial source code; a process of determining an interpreter that meets the user requirements for each partial source code; and a process of building a virtual environment for executing the source code based on the determined interpreter for each partial source code.

Description

고수준 프로그래밍 언어의 최적 인터프리터 탐색을 위한 방법 및 장치{Method and apparatus for searching for optimal interpreter of high-level programming language}Method and apparatus for searching for optimal interpreter of high-level programming language

본 개시는 고수준 프로그래밍 언어의 최적 인터프리터 탐색을 위한 방법 및 장치에 관한 것이다. 보다 상세하게는, 프로그래밍 언어에 대한 다양한 인터프리터 중에서 사용자의 요구사항에 가장 적합한 인터프리터를 선택하는 기술에 관한 것이다.The present disclosure relates to a method and apparatus for searching for an optimal interpreter for a high-level programming language. More specifically, it relates to a technique for selecting an interpreter most suitable for a user's requirements among various interpreters for a programming language.

이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.The content described below merely provides background information related to the present embodiment and does not constitute prior art.

인터프리터(interpreter)는 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 인터프리터는 개발 편의성이 높아 널리 활용된다.An interpreter is a computer program or environment that directly executes the source code of a programming language. Interpreters are widely used because they are easy to develop.

인터프리터마다 상황에 따라 성능 차이가 있다. 예를 들어, 특정 인터프리터는 수치 계산에 최적화되어 있을 수 있으며, 다른 인터프리터는 문자열 처리나 입출력 작업에 최적화되어 있을 수 있다. 따라서, 사용자가 최적의 인터프리터를 선택하기 위해서는 각 인터프리터의 성능과 특성에 대한 깊은 이해가 요구된다.Interpreters have different performances depending on the situation. For example, a particular interpreter may be optimized for numerical calculations, while another interpreter may be optimized for string processing or input/output operations. Therefore, in order for users to select the optimal interpreter, they need to have a deep understanding of the performance and characteristics of each interpreter.

인터프리터마다 호환성 문제가 있을 수 있다. 잘못된 인터프리터를 선택할 경우, 코드의 실행에 문제가 발생할 수 있으며, 이로 인해 추가적인 디버깅과 수정 작업이 필요하게 된다.Each interpreter may have compatibility issues. Choosing the wrong interpreter may result in problems executing your code, requiring additional debugging and modification.

그러나 사용자의 요구사항(예컨대, 실행 속도, 메모리 사용량 등)을 충족하면서 코드에 대한 최적의 인터프리터를 선택하는 과정을 관리하는 메커니즘은 부재한 실정이다. 예를 들어, 프로젝트나 코드에 따라 최적의 인터프리터가 달라질 수 있음에도, 특정 프로젝트에서 인터프리터를 선택하고 설정하는 것은 온전히 사용자의 몫이며, 새로운 프로젝트나 다른 환경에서는 사용자는 인터프리터를 다시 선택하고 설정해야 한다.However, there is no mechanism to manage the process of selecting the optimal interpreter for the code while satisfying the user's requirements (e.g., execution speed, memory usage, etc.). For example, although the optimal interpreter may vary depending on the project or code, the user is responsible for selecting and configuring the interpreter for a specific project, and for a new project or in a different environment, the user must select and configure the interpreter again.

나아가 코드 내부에서 메소드나 동작 단위로 적합한 인터프리터가 다를 경우, 해당 부분을 분리하여 최적의 인터프리터를 선택하여 실행시키는 메커니즘이 부재하다. 이로 인해 사용자는 전체 코드를 기반으로 인터프리터를 판단하고 선택할 수밖에 없다, 이는 세부적인 최적화를 방해하는 주요한 문제점으로 작용할 수 있다.Furthermore, if there are different interpreters for different methods or operation units within the code, there is no mechanism to separate the relevant parts and select and execute the optimal interpreter. This forces users to judge and select the interpreter based on the entire code, which can be a major problem that hinders detailed optimization.

본 개시는, 고수준 프로그래밍 언어의 최적 인터프리터 탐색을 위한 방법 및 장치를 제공하는 데 주된 목적이 있다.The main purpose of the present disclosure is to provide a method and apparatus for searching for an optimal interpreter for a high-level programming language.

본 개시는, 사용자의 요구사항에 가장 적합한 인터프리터를 탐색하고, 탐색된 인터프리터로 코드를 실행할 수 있는 환경을 제공하는 데 일 목적이 있다.The purpose of this disclosure is to provide an environment in which an interpreter best suited to a user's requirements can be searched and codes can be executed with the searched interpreter.

본 개시는, 코드 내의 부분 코드마다 최적의 인터프리터가 다른 경우 각 부분 코드를 분리하여 대응하는 최적의 인터프리터로 각 부분 코드를 실행하는 데 일 목적이 있다.The purpose of the present disclosure is to separate each partial code and execute each partial code with a corresponding optimal interpreter when the optimal interpreter is different for each partial code within the code.

본 발명이 해결하고자 하는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The problems to be solved by the present invention are not limited to the problems mentioned above, and other problems not mentioned will be clearly understood by those skilled in the art from the description below.

본 개시의 일 측면에 의하면, 최적 인터프리터로 코드 실행환경을 제공하기 위한 방법으로서, 소스 코드 및 사용자 요구사항을 입력받는 과정; 상기 소스 코드를 분리하여 적어도 하나의 부분 소스 코드를 획득하는 과정; 부분 소스 코드마다 상기 사용자 요구사항에 부합하는 인터프리터를 결정하는 과정; 및 부분 소스 코드별 결정된 인터프리터에 기초하여 상기 소스 코드를 실행하기 위한 가상 환경을 구축하는 과정을 포함하는 방법을 제공한다.According to one aspect of the present disclosure, a method for providing a code execution environment with an optimal interpreter is provided, comprising: a process of receiving source code and user requirements; a process of separating the source code to obtain at least one partial source code; a process of determining an interpreter that meets the user requirements for each partial source code; and a process of building a virtual environment for executing the source code based on the determined interpreter for each partial source code.

본 개시의 다른 측면에 의하면, 하나 이상의 프로세서 및 하나 이상의 프로세서와 동작 가능하게 결합된 메모리를 포함하는 장치로서, 상기 메모리는 하나 이상의 프로세서에 의한 명령의 실행에 응답하여 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령을 저장하고, 상기 동작들은, 소스 코드 및 사용자 요구사항을 입력받는 과정; 상기 소스 코드를 분리하여 적어도 하나의 부분 소스 코드를 획득하는 과정; 부분 소스 코드마다 상기 사용자 요구사항에 부합하는 인터프리터를 결정하는 과정; 및 부분 소스 코드별 결정된 인터프리터에 기초하여 상기 소스 코드를 실행하기 위한 가상 환경을 구축하는 과정을 포함하는, 장치를 제공한다.According to another aspect of the present disclosure, a device including one or more processors and a memory operably coupled with the one or more processors, the memory storing instructions for causing the one or more processors to perform operations in response to execution of instructions by the one or more processors, the operations including: a process of receiving source code and a user requirement; a process of separating the source code to obtain at least one partial source code; a process of determining an interpreter satisfying the user requirement for each partial source code; and a process of building a virtual environment for executing the source code based on the determined interpreter for each partial source code.

본 개시의 실시예에 의하면, 코드의 부분 코드마다 최적화된 인터프리터로 실행함으로써, 코드의 성능을 향상시키는 효과가 있다.According to an embodiment of the present disclosure, the performance of the code is improved by executing each part of the code with an optimized interpreter.

본 개시의 실시예에 의하면, 코드의 여러 부분 코드를 대응하는 최적의 인터프리터로 병렬로 실행함으로써, 코드의 실행 시간을 단축시키는 효과가 있다.According to an embodiment of the present disclosure, there is an effect of shortening the execution time of the code by executing several parts of the code in parallel with the corresponding optimal interpreter.

본 개시의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The effects of the present disclosure are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description below.

도 1은 본 개시의 일 실시예에 따른 최적 인터프리터로 코드 실행환경을 제공하기 위한 장치의 구성도이다.
도 2는 본 개시의 일 실시예에 따른 최적 인터프리터로 코드 실행환경을 제공하기 위한 방법의 순서도이다.
도 3은 본 개시의 일 실시예에 따른 코드를 분리하는 과정을 설명하기 위한 도면이다.
도 4는 본 개시의 일 실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다.
FIG. 1 is a block diagram of a device for providing a code execution environment with an optimal interpreter according to one embodiment of the present disclosure.
FIG. 2 is a flowchart of a method for providing a code execution environment with an optimal interpreter according to one embodiment of the present disclosure.
FIG. 3 is a diagram for explaining a process of separating code according to one embodiment of the present disclosure.
FIG. 4 is a block diagram illustrating an example of a computer device according to one embodiment of the present disclosure.

이하, 본 개시의 일부 실시예들을 예시적인 도면을 이용해 상세하게 설명한다. 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Hereinafter, some embodiments of the present disclosure will be described in detail using exemplary drawings. When adding reference numerals to components of each drawing, it should be noted that the same numerals are used for identical components as much as possible even if they are shown in different drawings. In addition, when describing the present disclosure, if it is determined that a specific description of a related known configuration or function may obscure the gist of the present disclosure, the detailed description thereof will be omitted.

본 개시에 따른 실시예의 구성요소를 설명하는 데 있어서, 제1, 제2, i), ii), a), b) 등의 부호를 사용할 수 있다. 이러한 부호는 그 구성요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 부호에 의해 해당 구성요소의 본질 또는 차례나 순서 등이 한정되지 않는다. 명세서에서 어떤 부분이 어떤 구성요소를 '포함' 또는 '구비'한다고 할 때, 이는 명시적으로 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. In describing components of embodiments according to the present disclosure, symbols such as first, second, i), ii), a), b), etc. may be used. These symbols are only for distinguishing the components from other components, and the nature or order or sequence of the components is not limited by the symbols. When a part in the specification is said to "include" or "provide" a component, this does not mean that other components are excluded, but rather that other components can be further included, unless explicitly stated otherwise.

첨부된 도면과 함께 이하에 개시될 상세한 설명은 본 개시의 예시적인 실시 형태를 설명하고자 하는 것이며, 본 개시가 실시될 수 있는 유일한 실시 형태를 나타내고자 하는 것이 아니다.The detailed description set forth below, together with the accompanying drawings, is intended to explain exemplary embodiments of the present disclosure and is not intended to represent the only embodiments in which the present disclosure may be practiced.

본 개시는 프로그래밍 언어에 대한 다양한 인터프리터 중에서 사용자의 요구사항에 가장 적합한 인터프리터를 선택하고 테스트 및 비교하는 하는 기술에 관한 것이다. 이를 통해 사용자의 특정 요구사항(예를 들어, 실행 속도, 메모리 사용량 등)을 만족시키는 인터프리터를 선택할 수 있다. 또한, 사용자는 특정 파일, 코드 또는 프로그램에 대해 선택된 인터프리터로 실행을 자동화하고 이에 따른 성능 및 호환성 문제를 최소화할 수 있다.The present disclosure relates to a technique for selecting, testing and comparing an interpreter that best suits a user's requirements among various interpreters for a programming language. This allows the user to select an interpreter that satisfies specific requirements (e.g., execution speed, memory usage, etc.). In addition, the user can automate execution with the selected interpreter for a specific file, code or program, thereby minimizing performance and compatibility issues.

이를 위해 최적 인터프리터로 코드 실행환경을 제공하기 위한 방법 및 장치를 제시하며, 특히 코드 내의 부분 코드마다 최적의 인터프리터가 다른 경우 각 부분 코드를 분리하여 대응하는 최적의 인터프리터로 각 부분 코드를 실행하도록 관리한다. 이를 통해 병렬 처리, 자원 분리, 메모리 최적화 등이 가능하여 코드의 성능을 향상시킬 수 있다. 또한, 특정 부분 코드만이 특정 인터프리터에서 오류를 발생시킬 경우 해당 부분 코드만을 다른 인터프리터로 실행하여 문제를 회피함으로써, 호환성 및 안정성 측면에서 장점이 있다.To this end, a method and device for providing a code execution environment with an optimal interpreter are proposed, and in particular, when the optimal interpreter is different for each partial code within the code, each partial code is separated and managed to be executed with the corresponding optimal interpreter. This enables parallel processing, resource separation, memory optimization, etc., and thus improves the performance of the code. In addition, when only a specific partial code causes an error in a specific interpreter, only the corresponding partial code is executed with a different interpreter, thereby avoiding the problem, thereby providing advantages in terms of compatibility and stability.

본 명세서에서 용어 '코드'는 고수준 프로그래밍 언어를 이용하여 작성된 소스 코드 내지 원시 코드로서 인터프리터로 실행할 수 있는 것을 말하며, 용어 '코드'는 용어 '소스 코드', 용어 '원시 코드' 또는 용어 '프로그램'과 혼용될 수 있다.In this specification, the term 'code' refers to source code or raw code written using a high-level programming language and can be executed by an interpreter, and the term 'code' may be used interchangeably with the term 'source code', the term 'raw code', or the term 'program'.

도 1은 본 개시의 일 실시예에 따른 최적 인터프리터로 코드 실행환경을 제공하기 위한 장치(이하 '최적 실행환경 제공장치')의 구성도이다.FIG. 1 is a configuration diagram of a device (hereinafter referred to as “device providing optimal execution environment”) for providing a code execution environment with an optimal interpreter according to one embodiment of the present disclosure.

최적 실행환경 제공장치(100)는 사용자가 입력한 코드를 적어도 하나의 부분 코드로 분리하고, 각 부분 코드에 대해 최적 인터프리터를 탐색하고, 부분 코드별 최적 인터프리터에 기초하여 코드 실행환경을 설정 및 제공할 수 있다. 이를 위해, 최적 실행환경 제공장치(100)는 데이터베이스(database, 110), 사용자 인터페이스(user interface, 120), 인터프리터 테스트부(interpreter test unit, 130), 인터프리터 최적화부(interpreter optimization unit, 140) 및 실행환경 구축부(execution environment construction unit, 150)의 전부 또는 일부를 포함한다.The optimal execution environment providing device (100) can separate a code input by a user into at least one partial code, search for an optimal interpreter for each partial code, and set and provide a code execution environment based on the optimal interpreter for each partial code. To this end, the optimal execution environment providing device (100) includes all or part of a database (110), a user interface (120), an interpreter test unit (130), an interpreter optimization unit (140), and an execution environment construction unit (150).

도 1은 설명의 편의를 위해 최적 실행환경 제공장치(100)를 장치로서 도시한 것으로, 다른 실시예에서 최적 실행환경 제공장치(100) 및 이의 각 구성요소는 하드웨어 또는 소프트웨어로 구현되거나, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, 각 구성요소의 기능이 소프트웨어로 구현되고, 하나 이상의 프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.FIG. 1 illustrates the optimal execution environment providing device (100) as a device for convenience of explanation. In other embodiments, the optimal execution environment providing device (100) and each component thereof may be implemented as hardware or software, or may be implemented as a combination of hardware and software. In addition, the function of each component may be implemented as software, and one or more processors may be implemented to execute the function of the software corresponding to each component.

데이터베이스(110)는 다양한 인터프리터에 대한 정보를 저장하고 관리한다. 해당 정보는 인터프리터별 성능 데이터, 호환성 정보 등을 포함한다. 해당 정보는 인터프리터별 선호되는 각 인터프리터의 버전, 업데이트 내역, 지원하는 언어 기능 등의 상세 정보를 포함한다. 또한, 데이터베이스(110)는 각 인터프리터의 특성, 장점, 그리고 특정 상황에서의 최적화된 성능 정보도 저장하고 관리한다. 인터프리터에 대한 정보는 사용자 요구사항과 매칭하여 최적의 인터프리터를 추천하거나 선택하는 데 활용된다.The database (110) stores and manages information about various interpreters. The information includes performance data for each interpreter, compatibility information, etc. The information includes detailed information about each interpreter, such as preferred versions of each interpreter, update history, and supported language functions. In addition, the database (110) also stores and manages information about the characteristics, advantages, and optimized performance for specific situations of each interpreter. The information about the interpreter is used to recommend or select the optimal interpreter by matching it with user requirements.

데이터베이스(110)는 인터프리터 테스트 결과를 저장하고 관리한다. 테스트 결과는 사용자 요구사항과 함께 코드 또는 각 부분 코드에 대응하는 최적 인터프리터를 결정하는 데 활용된다.The database (110) stores and manages interpreter test results. The test results are used to determine the optimal interpreter corresponding to the code or each partial code together with user requirements.

데이터베이스(110)는 사용자가 입력한 코드의 각 부분 코드에 대응하는 최적의 인터프리터 정보를 저장하고 관리한다. 이는 코드 실행을 위한 최적의 가상 환경을 구축하는 데 활용된다.The database (110) stores and manages optimal interpreter information corresponding to each part of the code entered by the user. This is used to build an optimal virtual environment for code execution.

사용자 인터페이스(120)는 사용자로부터 작성된 코드를 입력 받는다. 또한, 최적화에 관한 사용자 요구사항(예를 들어, 실행 속도, 메모리 사용량 등)을 입력 받을 수 있다.The user interface (120) receives a code written by a user. In addition, user requirements regarding optimization (e.g., execution speed, memory usage, etc.) can be input.

사용자 인터페이스(120)는 사용자에게 테스트 결과를 시각적으로 표시할 수 있다. 여기서, 테스트 결과는 인터프리터 테스트부(130)에 의해 각 부분 코드를 각 인터프리터로 실행하여 실행시간, 메모리 사용량 등의 성능지표를 측정한 것으로 데이터베이스(110)에 저장된 것을 말한다. 여기서, 각 부분 코드는 인터프리터 최적화부(140)에서 코드 분리를 수행하여 얻어지는 것으로 하나의 기능 내지 동작을 수행하는 단위의 코드를 말한다.The user interface (120) can visually display the test results to the user. Here, the test results refer to the results of measuring performance indicators such as execution time and memory usage by executing each partial code with each interpreter by the interpreter test unit (130) and stored in the database (110). Here, each partial code refers to a unit of code that performs one function or operation and is obtained by performing code separation in the interpreter optimization unit (140).

사용자 인터페이스(120)는 사용자에게 각 부분 코드에 대응하여 결정된 최적의 인터프리터에 대한 정보를 시각적으로 표시할 수 있다. 해당 정보는 인터프리터 최적화부(140)에 의해 사용자 요구사항 및 테스트 결과에 기초하여 각 부분 코드에 대해 결정된 최적의 인터프리터에 관한 정보이다.The user interface (120) can visually display information to the user about the optimal interpreter determined for each partial code. The information is information about the optimal interpreter determined for each partial code by the interpreter optimization unit (140) based on user requirements and test results.

사용자 인터페이스(120)를 통해 사용자는 실행환경 구축부(150)에 의해 구축된 가상 환경에서 코드를 실행하고, 실행 결과를 확인할 수 있다.Through the user interface (120), the user can execute code in a virtual environment constructed by the execution environment construction unit (150) and check the execution results.

사용자 인터페이스(120)는 통합 개발 환경(IDE, Integrated Development Environment)의 사용자 인터페이스와 통합되어 제공될 수 있으나, 이에 한정되지 않는다.The user interface (120) may be provided integrated with the user interface of an integrated development environment (IDE), but is not limited thereto.

인터프리터 테스트부(130)는 사용자가 입력한 코드를 다양한 인터프리터로 가상 환경(virtual environment)에서 실행하여 테스트한다. 인터프리터 테스트부(130)는 사용자가 입력한 코드가 각 부분 코드로 분리된 경우, 부분 코드마다 다양한 인터프리터로 가상 환경에서 실행하여 테스트한다. 여기서, 가상 환경은 독립적인 종류와 버전의 인터프리터, 모듈, 라이브러리 등을 갖는 실행 환경으로, 서로 다른 가상 환경 간에 서로 영향을 미치지 않는다. The interpreter test unit (130) tests the code entered by the user by executing it in a virtual environment with various interpreters. If the code entered by the user is divided into each partial code, the interpreter test unit (130) tests it by executing each partial code in a virtual environment with various interpreters. Here, the virtual environment is an execution environment having independent types and versions of interpreters, modules, libraries, etc., and different virtual environments do not affect each other.

인터프리터 테스트부(130)는 데이터베이스(110)에서 다양한 인터프리터에 대한 정보를 조회한다. 인터프리터 테스트부(130)는 사용자가 입력한 코드 또는 사용자가 입력한 코드를 분리한 각 부분 코드를 인터프리터 최적화부(140)로부터 획득한다.The interpreter test unit (130) searches the database (110) for information on various interpreters. The interpreter test unit (130) obtains the code entered by the user or each partial code separated from the code entered by the user from the interpreter optimization unit (140).

인터프리터 테스트부(130)는 데이터베이스(110)에서 조회한 인터프리터 정보에 기초하여 인터프리터별 가상 환경을 구축하고, 코드 및/또는 각 부분 코드에 대한 테스트를 수행한다.The interpreter test unit (130) builds a virtual environment for each interpreter based on interpreter information retrieved from the database (110) and performs tests on the code and/or each partial code.

인터프리터 테스트부(130)는 동적 코드 분석 도구(dynamic code analysis tool)를 이용하여 코드 또는 각 부분 코드의 성능 측정 및 분석을 수행하고 결과를 도출할 수 있다. 예를 들어, 프로파일링 도구를 활용하여 코드의 어떤 부분이 시간을 많이 소모하는지, 어떤 함수가 자주 호출되는지 분석할 수 있다. 프로파일링 도구는 동적 코드 분석 도구의 일종으로 gprofiler, eBPF 등을 활용할 수 있으나, 이에 한정되지 않는다.The interpreter test unit (130) can perform performance measurement and analysis of code or each part of code and derive results using a dynamic code analysis tool. For example, a profiling tool can be used to analyze which part of the code consumes a lot of time and which function is frequently called. The profiling tool is a type of dynamic code analysis tool and can utilize gprofiler, eBPF, etc., but is not limited thereto.

인터프리터 테스트부(130)는 테스트 수행 시 동일한 환경으로 통제하여 일정 횟수를 수행해 테스트 결과를 도출한다. 여기서, 테스트 결과는 각 부분 코드를 각 인터프리터로 실행하여 측정한 실행시간, 메모리 사용량 등의 성능지표를 포함한다. 인터프리터 테스트부(130)는 도출된 테스트 결과를 데이터베이스(110)에 저장한다. 저장된 테스트 결과는 인터프리터 최적화부(140)에서 코드 또는 각 부분 코드에 대응하는 최적 인터프리터를 결정하는 데 활용된다.The interpreter test unit (130) controls the same environment when performing the test and performs the test a certain number of times to derive the test results. Here, the test results include performance indicators such as execution time and memory usage measured by executing each partial code with each interpreter. The interpreter test unit (130) stores the derived test results in the database (110). The stored test results are used by the interpreter optimization unit (140) to determine the optimal interpreter corresponding to the code or each partial code.

인터프리터 테스트부(130)는 인터프리터 최적화부(140)에서 정적 코드 분석 도구를 이용하여 추출한 코드 또는 각 부분 코드에서 사용된 모듈 또는 라이브러리가 각 인터프리터에서 정상적으로 임포트(import)되는지 테스트를 더 수행할 수 있다. 이를 통해, 정적 코드 분석을 통한 모듈 및/또는 라이브러리의 호환성 검증을 추가적으로 보완할 수 있다.The interpreter test unit (130) can further perform a test to check whether the code extracted by the interpreter optimization unit (140) using a static code analysis tool or the modules or libraries used in each partial code are normally imported into each interpreter. Through this, the compatibility verification of modules and/or libraries through static code analysis can be additionally supplemented.

인터프리터 최적화부(140)는 사용자 요구사항(예컨대, 실행 속도, 메모리 사용량 등) 및 코드를 입력받고, 코드를 각 인터프리터로 테스트한 결과 및 사용자 요구사항에 기초하여 최적의 인터프리터를 결정한다.The interpreter optimization unit (140) receives user requirements (e.g., execution speed, memory usage, etc.) and code, tests the code with each interpreter, and determines the optimal interpreter based on the user requirements.

인터프리터 최적화부(140)는 입력받은 코드에 대한 분리를 수행한다. 이는, 코드를 각 부분 코드로 분리하여 부분 코드마다 최적의 인터프리터를 선택하기 위함이다. 여기서, 부분 코드는 하나의 기능 내지 동작을 수행하는 단위의 코드를 말한다. 예를 들어, 코드를 메소드별, 함수별 또는 클래스별로 분리하여 각 부분 코드를 얻을 수 있으나, 이에 한정되지 않는다.The interpreter optimization unit (140) performs separation on the input code. This is to separate the code into each partial code and select the optimal interpreter for each partial code. Here, the partial code refers to a unit of code that performs one function or operation. For example, the code may be separated by method, function, or class to obtain each partial code, but is not limited thereto.

코드 분리를 통해 부분 코드별로 최적의 인터프리터를 이용하는 경우 코드 전체의 성능을 향상시킬 수 있다. 이는 부분 코드별로 최적의 인터프리터를 이용함으로써 병렬 처리, 자원 분리, 메모리 최적화 등을 통해 실행 시간 및 메모리 사용량을 줄일 수 있기 때문이다. 또한, 특정 부분 코드만이 특정 인터프리터에서 오류를 발생시킬 경우 해당 부분 코드만을 다른 인터프리터로 실행하여 문제를 회피할 수 있어, 호환성 및 안정성 측면에서도 장점이 있다.By using the optimal interpreter for each partial code through code separation, the performance of the entire code can be improved. This is because by using the optimal interpreter for each partial code, execution time and memory usage can be reduced through parallel processing, resource separation, and memory optimization. In addition, if only a specific partial code causes an error in a specific interpreter, the problem can be avoided by executing only that partial code with a different interpreter, which also has advantages in terms of compatibility and stability.

인터프리터 최적화부(140)에서 코드를 분리하는 과정의 일 실시예가 도 3에 도시되어 있다.An example of a process for separating code in the interpreter optimization unit (140) is illustrated in FIG. 3.

먼저, 코드를 메소드, 클래스 또는 동작 등의 단위로 분리할 수 있는지 판단한다(S221). 코드를 분리할 수 없는 경우, 인터프리터 테스트부(130)에서 전체 코드에 대한 테스트를 수행한다(S240). 코드를 분리할 수 있는 경우, 정적 코드 분석 도구(static code analysis tool)를 이용하여 코드 분리가 가능한지 판단한다(S223). 코드를 분리할 수 없는 경우, 사용자 입력을 통한 코드 분리를 수행할 수 있다(S233). 사용자 입력을 통해 코드가 각 부분 코드로 분리되면 인터프리터 테스트부(130)에서 각 부분 코드에 대한 테스트 및 전체 코드에 대한 테스트를 수행한다(S240). 코드를 분리할 수 있는 경우, 정적 코드 분석 도구를 이용하여 코드를 각 부분 코드로 분리하고(S231), 인터프리터 테스트부(130)에서 각 부분 코드에 대한 테스트 및 전체 코드에 대한 테스트를 수행한다(S240).First, it is determined whether the code can be separated into units such as methods, classes, or operations (S221). If the code cannot be separated, the interpreter test unit (130) performs a test on the entire code (S240). If the code can be separated, a static code analysis tool is used to determine whether code separation is possible (S223). If the code cannot be separated, code separation can be performed through user input (S233). If the code is separated into each partial code through user input, the interpreter test unit (130) performs a test on each partial code and a test on the entire code (S240). If the code can be separated, the static code analysis tool is used to separate the code into each partial code (S231), and the interpreter test unit (130) performs a test on each partial code and a test on the entire code (S240).

인터프리터 최적화부(140)는 정적 코드 분석 도구를 이용하여 코드의 수치 연산 유무, 문자열 연산 유무, 벡터 연산 유무, 데이터 흐름, 호출 관계 등을 분석할 수 있다.The interpreter optimization unit (140) can analyze whether the code contains numerical operations, string operations, vector operations, data flow, call relationships, etc. using a static code analysis tool.

인터프리터 최적화부(140)는 정적 코드 분석 도구를 이용하여 코드 또는 각 부분 코드에서 사용된 모듈 또는 라이브러리나 프로그래밍 언어가 특정 인터프리터와 호환되는지 확인할 수 있다. 인터프리터별 호환되는 모듈 또는 라이브러리나 프로그래밍 언어에 관한 정보는 데이터베이스(110)를 조회하여 획득할 수 있다. 이를 통해 최적 인터프리터 결정 과정에서 코드와 호환되지 않는 인터프리터를 제외한다. The interpreter optimization unit (140) can use a static code analysis tool to check whether a module, library, or programming language used in the code or each partial code is compatible with a specific interpreter. Information on modules, libraries, or programming languages compatible with each interpreter can be obtained by querying the database (110). Through this, interpreters that are not compatible with the code are excluded in the process of determining the optimal interpreter.

인터프리터 최적화부(140)는 사용자 요구사항 및 인터프리터 테스트부(130)에서 수행된 테스트 결과에 기초하여 코드 또는 각 부분 코드에 대한 최적의 인터프리터를 결정한다. 예를 들어, 사용자 요구사항이 빠른 실행 속도인 경우, 코드 또는 각 부분 코드에 대한 최적의 인터프리터로 해당 코드를 실행하여 측정된 실행 시간이 가장 짧은 인터프리터를 결정할 수 있다. 예를 들어, 사용자 요구사항이 메모리 사용량의 최소화인 경우, 코드 또는 각 부분 코드에 대한 최적의 인터프리터로 해당 코드를 실행하여 측정된 메모리 사용량이 가장 적은 인터프리터를 결정할 수 있다. 예를 들어, 사용자 요구사항이 빠른 실행 속도 및 메모리 사용량의 최소화인 경우, 코드 또는 각 부분 코드에 대해 측정된 인터프리터별 실행 시간과 메모리 사용량 각각에 가중치를 부여하여 코드 또는 각 부분 코드에 대한 최적의 인터프리터를 결정할 수 있다.The interpreter optimization unit (140) determines the optimal interpreter for the code or each partial code based on the user requirements and the test results performed in the interpreter test unit (130). For example, if the user requirement is fast execution speed, the optimal interpreter for the code or each partial code may be used to execute the code, and the interpreter with the shortest measured execution time may be determined. For example, if the user requirement is minimizing memory usage, the optimal interpreter for the code or each partial code may be used to execute the code, and the interpreter with the lowest measured memory usage may be determined. For example, if the user requirement is fast execution speed and minimizing memory usage, the optimal interpreter for the code or each partial code may be determined by assigning weights to the measured execution time and memory usage of each interpreter for the code or each partial code.

실행환경 구축부(150)는 코드 또는 각 부분 코드 실행을 위한 가상 환경을 구축한다. 실행환경 구축부(150)는 인터프리터 최적화부(140)에서 결정된 코드 또는 각 부분 코드에 대한 최적의 인터프리터로 가상 환경을 각각 구축한다. 이때, 메시지 큐(message queue), 공유 메모리(shared memory) 등의 IPC(Inter-Process Communication)를 활용하거나 RESTful API, gRPC 등의 프로토콜을 활용하여 부분 코드들 간의 효율적인 통신을 지원할 수 있다.The execution environment construction unit (150) constructs a virtual environment for executing the code or each partial code. The execution environment construction unit (150) constructs each virtual environment with an optimal interpreter for the code or each partial code determined by the interpreter optimization unit (140). At this time, efficient communication between partial codes can be supported by utilizing IPC (Inter-Process Communication) such as a message queue or shared memory, or by utilizing protocols such as RESTful API or gRPC.

본 개시의 일 실시예에 따르면, 코드를 분리하여 별도의 부분 코드 각각에 대해 최적의 인터프리터로 실행함으로써 얻을 수 있는 이점은 다음과 같다.According to one embodiment of the present disclosure, the advantages obtained by separating the code and executing it with an optimal interpreter for each separate partial code are as follows.

특정 인터프리터는 수치 계산에 최적화되어 있을 수 있으며, 다른 인터프리터는 문자열 처리나 입출력 작업에 최적화될 수 있다. 따라서, 코드의 특정 부분을 해당 작업에 최적화된 인터프리터로 실행하면 성능을 향상할 수 있다. 예를 들면, Pypy3의 경우 수치 연산을 JIT 컴파일(Just-In-Time Compile)을 통해 최적화한다.A particular interpreter may be optimized for numerical computations, while another may be optimized for string processing or input/output operations. Therefore, performance can be improved by running certain parts of your code with an interpreter optimized for that task. For example, Pypy3 optimizes numerical computations through JIT compilation (Just-In-Time Compilation).

다른 인터프리터로 코드의 여러 부분을 병렬로 실행하여 작업을 처리함으로써, 전체 실행 시간을 단축할 수 있다. 예를 들어, 파이썬(Python)의 경우 GIL(global interpreter lock)으로 인해 단일 인터프리터로 프로그램이 실행될 경우, 단일 스레드로 동작하여 병렬 처리가 비효율적으로 동작하는 문제점이 있는데, 이를 개선할 수 있다.By executing multiple parts of the code in parallel with different interpreters to process the work, the overall execution time can be shortened. For example, in the case of Python, there is a problem that when a program is executed with a single interpreter due to the GIL (global interpreter lock), it operates as a single thread, making parallel processing inefficient, but this can be improved.

각 인터프리터는 독립적인 메모리 공간 및 리소스를 사용하므로, 한 인터프리터에서의 메모리 누수(memory leakage)나 오버헤드(overhead)가 다른 인터프리터의 성능에 영향을 미치지 않는다.Since each interpreter uses independent memory space and resources, memory leakage or overhead in one interpreter does not affect the performance of other interpreters.

특정 코드 부분이 한 인터프리터에서 문제를 일으킬 경우, 해당 부분만을 다른 인터프리터로 실행하여 문제를 회피할 수 있다.If a particular piece of code causes a problem in one interpreter, you can work around the problem by running just that piece in a different interpreter.

각 인터프리터는 자체적인 메모리 관리 전략을 가지고 있다. 따라서, 특정 코드 부분이 메모리 사용량이 많을 경우, 해당 부분을 메모리 관리가 효율적인 인터프리터로 실행하여 메모리 사용량을 줄일 수 있다.Each interpreter has its own memory management strategy. Therefore, if a certain part of the code uses a lot of memory, it can be run with an interpreter with efficient memory management to reduce memory usage.

도 2는 본 개시의 일 실시예에 따른 최적 인터프리터로 코드 실행환경을 제공하기 위한 방법(이하 '최적 실행환경 제공방법')의 순서도이다. 최적 실행환경 제공방법은 최적 실행환경 제공장치(100)에 의해 수행될 수 있다.Figure 2 is a flow chart of a method for providing a code execution environment with an optimal interpreter according to one embodiment of the present disclosure (hereinafter referred to as the 'optimal execution environment providing method'). The optimal execution environment providing method can be performed by an optimal execution environment providing device (100).

도 2를 참조하면, 사용자가 작성한 코드 및 사용자 요구사항을 입력받는다(S210). 사용자 요구사항은 코드의 실행 속도 및/또는 메모리 사용량에 관한 것이다.Referring to Fig. 2, a user-written code and user requirements are input (S210). The user requirements are related to the execution speed and/or memory usage of the code.

사용자가 작성한 코드를 복수의 부분 코드로 분리할 수 있는지 판단할 수 있다(S220). It is possible to determine whether the user-written code can be separated into multiple partial codes (S220).

분리할 수 없는 경우, 전체 코드에 대해 S240 내지 S270 과정을 수행한다.If separation is not possible, perform steps S240 to S270 for the entire code.

분리할 수 있는 경우, 코드를 복수의 부분 코드로 분리한다(S230). 이는, 코드를 각 부분 코드로 분리하여 부분 코드마다 최적의 인터프리터를 선택하기 위함이다. 여기서, 부분 코드는 하나의 기능 내지 동작을 수행하는 단위의 코드를 말한다.If separable, the code is separated into multiple partial codes (S230). This is to separate the code into each partial code and select the optimal interpreter for each partial code. Here, the partial code refers to a unit of code that performs one function or operation.

데이터베이스(110)에 저장된 복수의 인터프리터 정보를 이용하여 부분 코드마다 호환되는 인터프리터 그룹을 선별할 수 있다. 부분 코드와 호환되지 않는 인터프리터를 필터링하기 위함이다.A group of interpreters compatible with each partial code can be selected using information about multiple interpreters stored in the database (110). This is to filter out interpreters that are not compatible with the partial code.

데이터베이스(110)에서 조회한 인터프리터 정보에 기초하여 필터링된 인터프리터별 가상 환경을 구축하고, 코드 및/또는 각 부분 코드에 대한 필터링된 인터프리터별 테스트를 수행한다(S240). 이때 동일한 환경으로 통제하여 일정 횟수만큼 테스트를 수행한다. 테스트 결과는 각 부분 코드를 각 인터프리터로 실행하여 측정한 실행시간, 메모리 사용량 등의 성능지표를 포함하며, 데이터베이스(110)에 저장된다.Based on the interpreter information retrieved from the database (110), a filtered interpreter-specific virtual environment is constructed, and a filtered interpreter-specific test for the code and/or each partial code is performed (S240). At this time, the test is performed a certain number of times under control with the same environment. The test results include performance indicators such as execution time and memory usage measured by executing each partial code with each interpreter, and are stored in the database (110).

테스트 결과 및 사용자 요구사항에 기초하여 코드 또는 각 부분 코드에 대한 최적 인터프리터를 결정한다(S250). 코드 또는 각 부분 코드에 대한 인터프리터별 테스트 결과를 이용하여 사용자 요구사항에 가장 부합하는 인터프리터를 코드 또는 각 부분 코드에 대한 최적 인터프리터로 결정할 수 있다. Based on the test results and user requirements, the optimal interpreter for the code or each partial code is determined (S250). Using the test results for each interpreter for the code or each partial code, the interpreter that best meets the user requirements can be determined as the optimal interpreter for the code or each partial code.

코드 또는 각 부분 코드 실행을 위한 가상 환경을 구축한다(S260). 코드 또는 각 부분 코드에 대해 결정된 최적의 인터프리터로 가상 환경을 각각 구축한다.A virtual environment is built for executing the code or each partial code (S260). Each virtual environment is built with the optimal interpreter determined for the code or each partial code.

구축된 가상 환경에서 코드를 실행할 수 있다(S270). 각 부분 코드별 최적의 인터프리터로 해당 코드가 실행된다. 부분 코드들 간의 효율적인 통신을 위해 프로세스 간 통신이나 RESTful, gRPC 등의 프로토콜을 활용할 수 있다.You can execute code in the constructed virtual environment (S270). The code is executed by the optimal interpreter for each partial code. For efficient communication between partial codes, you can utilize inter-process communication or protocols such as RESTful or gRPC.

도 4는 본 개시의 일 실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다. 본 개시의 실시예들에 따른 최적 인터프리터로 코드 실행환경을 제공하기 위한 방법은 도 4에 도시된 컴퓨터 장치(400)에 의해 구현될 수 있다.FIG. 4 is a block diagram illustrating an example of a computer device according to one embodiment of the present disclosure. A method for providing a code execution environment with an optimal interpreter according to embodiments of the present disclosure can be implemented by a computer device (400) illustrated in FIG. 4.

컴퓨터 장치(400)는 도 4에 도시된 바와 같이, 적어도 하나의 프로세서(410), 메모리(420), 네트워크 인터페이스(430) 및 입출력 인터페이스(440)를 포함할 수 있다. 버스(450, bus)는 컴퓨터 장치(400)의 구성요소들이 의도된 대로 서로 통신하게 하는 메커니즘을 제공한다. 버스(450)가 단일 버스로서 개략적으로 도시되어 있지만, 대안적인 구현은 다수의 버스를 사용할 수 있다.The computer device (400) may include at least one processor (410), memory (420), a network interface (430), and an input/output interface (440), as illustrated in FIG. 4. The bus (450) provides a mechanism for the components of the computer device (400) to communicate with each other as intended. While the bus (450) is schematically illustrated as a single bus, alternative implementations may use multiple buses.

프로세서(410)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(420) 또는 네트워크 인터페이스(430)에 의해 프로세서(410)로 제공될 수 있다. 예를 들어 프로세서(410)는 메모리(420)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다.The processor (410) may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input/output operations. The instructions may be provided to the processor (410) by the memory (420) or the network interface (430). For example, the processor (410) may be configured to execute instructions received according to program code stored in a storage device such as the memory (420).

메모리(420)는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 영구 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 디스크 드라이브와 같은 영구 대용량 기록장치는 메모리(420)와는 구분되는 별도의 영구 저장 장치로서 컴퓨터 장치(400)에 포함될 수도 있다.Memory (420) is a computer-readable recording medium and may include a random access memory (RAM), a read only memory (ROM), and a permanent mass storage device such as a disk drive. Here, the permanent mass storage device such as ROM and a disk drive may be included in the computer device (400) as a separate permanent storage device distinct from the memory (420).

또한, 메모리(420)에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(420)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 메모리(420)로 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 네트워크 인터페이스(430)를 통해 메모리(420)에 로딩될 수도 있다. 예를 들어, 소프트웨어 구성요소들은 네트워크 인터페이스(430)를 통해 수신되는 파일들에 의해 설치되는 컴퓨터 프로그램에 기반하여 컴퓨터 장치(400)의 메모리(420)에 로딩될 수 있다.Additionally, the memory (420) may store an operating system and at least one program code. These software components may be loaded into the memory (420) from a computer-readable recording medium separate from the memory (420). The separate computer-readable recording medium may include a computer-readable recording medium such as a floppy drive, a disk, a tape, a DVD/CD-ROM drive, a memory card, etc. In another embodiment, the software components may be loaded into the memory (420) via a network interface (430) rather than a computer-readable recording medium. For example, the software components may be loaded into the memory (420) of the computer device (400) based on a computer program installed by files received via the network interface (430).

네트워크 인터페이스(430)는 유선 또는 무선 통신망을 통해 컴퓨터 장치(400)가 다른 외부 장치와 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 컴퓨터 장치(400)의 프로세서(410)가 메모리(420)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이나 명령, 데이터, 파일 등이 네트워크 인터페이스(430)의 제어에 따라 유선 또는 무선 통신망을 통해 다른 외부 장치들로 전달될 수 있다. 역으로, 다른 외부 장치로부터의 신호나 명령, 데이터, 파일 등이 유선 또는 무선 통신망을 거쳐 컴퓨터 장치(400)의 네트워크 인터페이스(430)를 통해 컴퓨터 장치(400)로 수신될 수 있다. 네트워크 인터페이스(430)를 통해 수신된 신호나 명령, 데이터 등은 프로세서(410)나 메모리(420)로 전달될 수 있고, 파일 등은 컴퓨터 장치(400)가 더 포함할 수 있는 저장 매체(상술한 영구 저장장치)로 저장될 수 있다.The network interface (430) may provide a function for the computer device (400) to communicate with other external devices via a wired or wireless communication network. For example, requests, commands, data, files, etc. generated by the processor (410) of the computer device (400) according to program codes stored in a recording device such as a memory (420) may be transmitted to other external devices via a wired or wireless communication network under the control of the network interface (430). Conversely, signals, commands, data, files, etc. from other external devices may be received by the computer device (400) via the network interface (430) of the computer device (400) via a wired or wireless communication network. Signals, commands, data, etc. received via the network interface (430) may be transmitted to the processor (410) or the memory (420), and files, etc. may be stored in a storage medium (a permanent storage device described above) that the computer device (400) may further include.

입출력 인터페이스(440)는 입출력 장치와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 마이크, 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커 등과 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(440)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치는 컴퓨터 장치(400)와 하나의 장치로 구성될 수도 있다.The input/output interface (440) may be a means for interfacing with an input/output device. For example, the input device may include a device such as a microphone, a keyboard, or a mouse, and the output device may include a device such as a display, a speaker, etc. As another example, the input/output interface (440) may be a means for interfacing with a device that integrates input and output functions into one, such as a touch screen. The input/output device may be configured as a single device with the computer device (400).

또한, 다른 실시예들에서 컴퓨터 장치(400)는 도 4의 구성요소들보다 더 적은 혹은 더 많은 구성요소들을 포함할 수도 있다. 예를 들어, 컴퓨터 장치(400)는 상술한 입출력 장치 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.Additionally, in other embodiments, the computer device (400) may include fewer or more components than the components of FIG. 4. For example, the computer device (400) may be implemented to include at least some of the input/output devices described above, or may further include other components such as a transceiver, a database, etc.

본 발명에 따른 장치 또는 방법의 각 구성요소는 하드웨어 또는 소프트웨어로 구현되거나, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, 각 구성요소의 기능이 소프트웨어로 구현되고 마이크로프로세서가 각 구성요소에 대응하는 소프트웨어의 기능을 실행하도록 구현될 수도 있다.Each component of the device or method according to the present invention may be implemented as hardware or software, or as a combination of hardware and software. In addition, the function of each component may be implemented as software, and a microprocessor may be implemented to execute the function of the software corresponding to each component.

본 명세서에 설명되는 시스템들 및 기법들의 다양한 구현예들은, 디지털 전자 회로, 집적회로, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현예들은 프로그래밍가능 시스템 상에서 실행 가능한 하나 이상의 컴퓨터 프로그램들로 구현되는 것을 포함할 수 있다. 프로그래밍가능 시스템은, 저장 시스템, 적어도 하나의 입력 디바이스, 그리고 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 이들에게 데이터 및 명령들을 전송하도록 결합되는 적어도 하나의 프로그래밍가능 프로세서(이것은 특수 목적 프로세서일 수 있거나 혹은 범용 프로세서일 수 있음)를 포함한다. 컴퓨터 프로그램들(이것은 또한 프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 혹은 코드로서 알려져 있음)은 프로그래밍가능 프로세서에 대한 명령어들을 포함하며 "컴퓨터가 읽을 수 있는 기록매체"에 저장된다.Various implementations of the systems and techniques described herein can be implemented as digital electronic circuits, integrated circuits, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementations of one or more computer programs executable on a programmable system. The programmable system includes at least one programmable processor (which may be a special purpose processor or a general purpose processor) coupled to receive data and instructions from, and transmit data and instructions to, a storage system, at least one input device, and at least one output device. Computer programs (also known as programs, software, software applications, or code) include instructions for the programmable processor and are stored on a "computer-readable medium."

컴퓨터가 읽을 수 있는 기록매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 이러한 컴퓨터가 읽을 수 있는 기록매체는 ROM, CD-ROM, 자기 테이프, 플로피디스크, 메모리 카드, 하드 디스크, 광자기 디스크, 스토리지 디바이스 등의 비휘발성(non-volatile) 또는 비일시적인(non-transitory) 매체일 수 있으며, 또한 데이터 전송 매체(data transmission medium)와 같은 일시적인(transitory) 매체를 더 포함할 수도 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다.A computer-readable recording medium includes any type of recording device that stores data that can be read by a computer system. Such a computer-readable recording medium can be a non-volatile or non-transitory medium, such as a ROM, a CD-ROM, a magnetic tape, a floppy disk, a memory card, a hard disk, a magneto-optical disk, a storage device, and may further include a transitory medium, such as a data transmission medium. In addition, the computer-readable recording medium can be distributed over a network-connected computer system, so that the computer-readable code can be stored and executed in a distributed manner.

본 명세서의 흐름도/타이밍도에서는 각 과정들을 순차적으로 실행하는 것으로 기재하고 있으나, 이는 본 개시의 일 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것이다. 다시 말해, 본 개시의 일 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 개시의 일 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 흐름도/타이밍도에 기재된 순서를 변경하여 실행하거나 각 과정들 중 하나 이상의 과정을 병렬적으로 실행하는 것으로 다양하게 수정 및 변형하여 적용 가능할 것이므로, 흐름도/타이밍도는 시계열적인 순서로 한정되는 것은 아니다.Although the flowchart/timing diagram of this specification describes each process as being executed sequentially, this is only an illustrative description of the technical idea of one embodiment of the present disclosure. In other words, a person having ordinary skill in the art to which one embodiment of the present disclosure belongs may change and modify and apply various modifications and variations such as changing the order described in the flowchart/timing diagram and executing it or executing one or more of the processes in parallel without departing from the essential characteristics of one embodiment of the present disclosure. Therefore, the flowchart/timing diagram is not limited to a chronological order.

이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely an illustrative description of the technical idea of the present embodiment, and those with ordinary skill in the art to which the present embodiment belongs may make various modifications and variations without departing from the essential characteristics of the present embodiment. Therefore, the present embodiments are not intended to limit the technical idea of the present embodiment, but to explain it, and the scope of the technical idea of the present embodiment is not limited by these embodiments. The protection scope of the present embodiment should be interpreted by the following claims, and all technical ideas within a scope equivalent thereto should be interpreted as being included in the scope of the rights of the present embodiment.

100: 최적 실행환경 제공장치
110: 데이터베이스
120: 사용자 인터페이스
130: 인터프리터 테스트부
140: 인터프리터 최적화부
150: 실행환경 구축부
100: Device providing optimal execution environment
110: Database
120: User Interface
130: Interpreter Test Section
140: Interpreter Optimization Section
150: Execution environment construction department

Claims (10)

최적 인터프리터로 코드 실행환경을 제공하기 위한 방법으로서,
소스 코드 및 사용자 요구사항을 입력받는 과정;
상기 소스 코드를 분리하여 적어도 하나의 부분 소스 코드를 획득하는 과정;
부분 소스 코드마다 상기 사용자 요구사항에 부합하는 인터프리터를 결정하는 과정; 및
부분 소스 코드별 결정된 인터프리터에 기초하여 상기 소스 코드를 실행하기 위한 가상 환경을 구축하는 과정
을 포함하는 방법.
As a method to provide a code execution environment with an optimal interpreter,
The process of receiving source code and user requirements;
A process of separating the above source code to obtain at least one partial source code;
The process of determining an interpreter that meets the user requirements for each partial source code; and
A process of building a virtual environment for executing the source code based on an interpreter determined for each partial source code.
A method including:
제1 항에 있어서,
상기 획득하는 과정은,
상기 소스 코드를 하나의 기능 또는 동작을 수행하는 메소드, 함수 또는 클래스 단위로 분리하여 적어도 하나의 부분 소스 코드를 획득하는, 방법.
In the first paragraph,
The process of obtaining the above is,
A method for obtaining at least one partial source code by dividing the above source code into method, function or class units that perform one function or operation.
제1 항에 있어서,
상기 결정하는 과정은,
미리 저장된 복수의 인터프리터 정보를 이용하여 부분 소스 코드마다 호환되는 인터프리터 그룹을 선별하는 과정;
부분 소스 코드별 선별된 인터프리터 그룹에 포함된 각 인터프리터로 대응하는 부분 소스 코드를 테스트하여 실행 시간 및 메모리 사용량을 포함하는 성능 측정 결과를 획득하는 과정; 및
상기 성능 측정 결과 및 상기 사용자 요구사항에 기초하여 부분 소스 코드별 최적의 인터프리터를 결정하는 과정을 포함하는 방법.
In the first paragraph,
The above decision process is,
A process of selecting a compatible interpreter group for each partial source code by using information about multiple pre-stored interpreters;
The process of obtaining performance measurement results including execution time and memory usage by testing the corresponding partial source code with each interpreter included in the selected interpreter group by partial source code; and
A method including a process of determining an optimal interpreter for each partial source code based on the performance measurement results and the user requirements.
제1 항에 있어서,
상기 구축하는 과정은,
부분 소스 코드마다 결정된 인터프리터로 부분 소스 코드별 가상 환경을 구축하는, 방법.
In the first paragraph,
The above construction process is,
A method of building a virtual environment for each partial source code using an interpreter determined for each partial source code.
제1 항에 있어서,
상기 사용자 요구사항은 상기 코드의 실행 속도 및 메모리 사용량에 관한 것인, 방법.
In the first paragraph,
A method wherein the above user requirements relate to execution speed and memory usage of the above code.
하나 이상의 프로세서 및 하나 이상의 프로세서와 동작 가능하게 결합된 메모리를 포함하는 장치로서,
상기 메모리는 하나 이상의 프로세서에 의한 명령의 실행에 응답하여 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령을 저장하고,
상기 동작들은,
소스 코드 및 사용자 요구사항을 입력받는 과정;
상기 소스 코드를 분리하여 적어도 하나의 부분 소스 코드를 획득하는 과정;
부분 소스 코드마다 상기 사용자 요구사항에 부합하는 인터프리터를 결정하는 과정; 및
부분 소스 코드별 결정된 인터프리터에 기초하여 상기 소스 코드를 실행하기 위한 가상 환경을 구축하는 과정을 포함하는, 장치.
A device comprising one or more processors and memory operably coupled with the one or more processors,
The above memory stores instructions that cause one or more processors to perform operations in response to execution of instructions by one or more processors,
The above actions are,
The process of receiving source code and user requirements;
A process of separating the above source code to obtain at least one partial source code;
The process of determining an interpreter that meets the user requirements for each partial source code; and
A device comprising a process of constructing a virtual environment for executing the source code based on an interpreter determined for each partial source code.
제6 항에 있어서,
상기 획득하는 과정은,
상기 소스 코드를 하나의 기능 또는 동작을 수행하는 메소드, 함수 또는 클래스 단위로 분리하여 적어도 하나의 부분 소스 코드를 획득하는, 장치.
In Article 6,
The process of obtaining the above is,
A device for obtaining at least one partial source code by dividing the source code into method, function or class units that perform one function or operation.
제6 항에 있어서,
상기 결정하는 과정은,
미리 저장된 복수의 인터프리터 정보를 이용하여 부분 소스 코드마다 호환되는 인터프리터 그룹을 선별하는 과정;
부분 소스 코드별 선별된 인터프리터 그룹에 포함된 각 인터프리터로 대응하는 부분 소스 코드를 테스트하여 실행 시간 및 메모리 사용량을 포함하는 성능 측정 결과를 획득하는 과정; 및
상기 성능 측정 결과 및 상기 사용자 요구사항에 기초하여 부분 소스 코드별 최적의 인터프리터를 결정하는 과정을 포함하는 장치.
In Article 6,
The above decision process is,
A process of selecting a compatible interpreter group for each partial source code by using information about multiple pre-stored interpreters;
The process of obtaining performance measurement results including execution time and memory usage by testing the corresponding partial source code with each interpreter included in the selected interpreter group by partial source code; and
A device including a process for determining an optimal interpreter for each partial source code based on the performance measurement results and the user requirements.
제6 항에 있어서,
상기 구축하는 과정은,
부분 소스 코드마다 결정된 인터프리터로 부분 소스 코드별 가상 환경을 구축하는, 장치.
In Article 6,
The above construction process is,
A device that builds a virtual environment for each partial source code with an interpreter determined for each partial source code.
제6 항에 있어서,
상기 사용자 요구사항은 상기 코드의 실행 속도 및 메모리 사용량에 관한 것인, 장치.
In Article 6,
The above user requirements relate to the execution speed and memory usage of the above code, the device.
KR1020230136646A 2023-10-13 2023-10-13 Method and apparatus for searching for optimal interpreter of high-level programming language Pending KR20250053420A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230136646A KR20250053420A (en) 2023-10-13 2023-10-13 Method and apparatus for searching for optimal interpreter of high-level programming language

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230136646A KR20250053420A (en) 2023-10-13 2023-10-13 Method and apparatus for searching for optimal interpreter of high-level programming language

Publications (1)

Publication Number Publication Date
KR20250053420A true KR20250053420A (en) 2025-04-22

Family

ID=95603367

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230136646A Pending KR20250053420A (en) 2023-10-13 2023-10-13 Method and apparatus for searching for optimal interpreter of high-level programming language

Country Status (1)

Country Link
KR (1) KR20250053420A (en)

Similar Documents

Publication Publication Date Title
US10565097B2 (en) Orchestrating and providing a regression test
EP3285170B1 (en) Application profiling job management system, program, and method
US11665064B2 (en) Utilizing machine learning to reduce cloud instances in a cloud computing environment
US20100180255A1 (en) Programmable framework for automatic tuning of software applications
US11068247B2 (en) Vectorizing conditional min-max sequence reduction loops
EP3757760A1 (en) Method and apparatus for generating chip-based computing function, device, and storage medium
KR102013582B1 (en) Apparatus and method for detecting error and determining corresponding position in source code of mixed mode application program source code thereof
US10785109B1 (en) Automated generation of a network service design
JPWO2018066040A1 (en) Management computer and test environment determination method
US10528691B1 (en) Method and system for automated selection of a subset of plurality of validation tests
KR20250053420A (en) Method and apparatus for searching for optimal interpreter of high-level programming language
US9710360B2 (en) Optimizing error parsing in an integrated development environment
CA2947893C (en) Orchestrating and providing a regression test
EP3991027B1 (en) Method and apparatus for enabling autonomous acceleration of dataflow ai applications
JP7410269B2 (en) Automated verification of high-level construct optimization using test vectors
US8572594B2 (en) Invasion analysis to identify open types
US12271712B2 (en) Providing metric data for patterns usable in a modeling environment
KR102760804B1 (en) Electronic apparatus for obtaining minimum required time of partition execution and operating method thereof
WO2016001982A1 (en) Test data generation assistance device and test data generation assistance method
US20250291706A1 (en) Code cleaning
US11853750B2 (en) Subject matter expert identification and code analysis based on a probabilistic filter
EP4359944A1 (en) Shifting left database degradation detection
Castrillón Mazo et al. Parallel Code Flow
CN113297062A (en) Test method and device, electronic equipment and storage medium
JP2013171459A (en) Program analysis device, method for analyzing program, and recording medium

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20231013

PG1501 Laying open of application