KR102523329B1 - 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 - Google Patents

전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 Download PDF

Info

Publication number
KR102523329B1
KR102523329B1 KR1020200153896A KR20200153896A KR102523329B1 KR 102523329 B1 KR102523329 B1 KR 102523329B1 KR 1020200153896 A KR1020200153896 A KR 1020200153896A KR 20200153896 A KR20200153896 A KR 20200153896A KR 102523329 B1 KR102523329 B1 KR 102523329B1
Authority
KR
South Korea
Prior art keywords
power
performance
performance improvement
improvement
improvement factor
Prior art date
Application number
KR1020200153896A
Other languages
English (en)
Other versions
KR20220067324A (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 KR1020200153896A priority Critical patent/KR102523329B1/ko
Publication of KR20220067324A publication Critical patent/KR20220067324A/ko
Application granted granted Critical
Publication of KR102523329B1 publication Critical patent/KR102523329B1/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
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4432Reducing the energy consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J2203/00Indexing scheme relating to details of circuit arrangements for AC mains or AC distribution networks
    • H02J2203/20Simulating, e g planning, reliability check, modelling or computer assisted design [CAD]

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)

Abstract

본 발명은, 소프트웨어의 소스 코드를 입력받는 소스 코드 입력 단계; 상기 소스 코드를 분석하여 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인 단계; 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하는 1차 개선 단계; 상기 1차 개선 단계 후, 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하는 성능 확인 단계; 및 상기 실행 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행하는 2차 개선 단계; 를 포함하는, 전력 개선을 위한 소프트웨어 코드 변경 방법 및 그 장치에 관한 것이다.

Description

전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법{METHOD FOR VISUALIZING PERFORMANCE IMPROVEMENT ELEMENT AND CHANGING SOFTWARE CODE FOR POWER IMPROVEMENT}
본 발명은 전력 개선을 위한 소프트웨어 코드 변경 방법 및 그 장치에 관한 것이다.
제 4 차 산업 혁명에서 환경 모니터링, 교통 정보 분석, 유틸리티 모니터링, 대중 교통 및 사건보고. 스마트 시티 개발이 필요하게 되었다. 특히 스마트 시티를개발하느데, 스마트 테크놀러지나 스마트 인프라 스트럭쳐가 필요하다.
사이버 물리 시스템 (CPS:Cyber-Physical system) 기술은 스마트 시티 기술을 모니터링하고 통합하는 데 사용된다. 또한, CPS는 물리적 세계의 일반적인 대상을 복잡한 시스템의 다양한 컴퓨터와 연결하는데 이용되며, 현존하는 확장된 인베디드 시스템을 포함할 수 있다.
오늘날 임베디드 시스템은 단순한 구조에서 수많은 컴퓨터 장치들로 구성되는 복잡한 구조로 발전 되어왔다. 이러한 시스템에는 정확한 성능과 다양한 기능이 필요하며, 특히 거대하고 복잡한 소스 코드가 필요하지만 CPS 기반 소프트웨어 성능 또는 품질은 보장하는 것이 어려웠다.
특히 복잡해진 시스템에 있어서 저전력 설계 요구는 많이 제안되어 왔다. 하지만 이러한 저전력 성능을 위한 하드웨어적 해결책은 많은 비용이 소모될 뿐 아니라 시간적으로도 많은 시간이 필요하다는 문제점이 있어왔다.
본 발명은, 상술한 문제를 해결하기 위하여 안출된 것으로서, 소프트웨어의 소스코드를 개선하여 저전력 성능 개선을 도모하기 위한 전력 개선을 위한 소프트웨어 코드 변경 방법 및 그 장치를 제공하는 것을 목적으로 한다.
상술한 과제를 해결하기 위하여 안출된 본 발명의 일실시예인 전력 개선을 위한 소프트웨어 코드 변경 방법은, 소프트웨어의 고수준 언어 소스 코드를 입력받는 소스 코드 입력 단계; 상기 소스 코드를 분석하여 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인 단계; 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하는 1차 개선 단계; 상기 1차 개선 단계 후, 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하는 성능 확인 단계; 및 상기 실행 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행하는 2차 개선 단계; 를 포함할 수 있다.
여기서, 상기 전력 확인 단계는, 전력 가시화 모듈을 통해 상기 전력 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함할 수 있다.
여기서, 상기 전력 확인 단계는, 상기 소프트웨어를 실행하여 1차 전력 측정을 제 1 전력 정보를 생성하는 하는 단계; 전력 측정 프로젝트를 생성하여 전력 측정 환경을 준비하는 전력 측정 준비 단계: 상기 소스코드를 입력한 상태에서 상기 전력 측정 프로젝트를 실행하는 프로젝트 실행 단계; 상기 프로젝트 실행 단계후 2차 전력 측정을 하여 제 2 전력 정보를 생성하는 단계; 및 상기 제 1 전력 정보와 제 2 전력 정보를 비교하여 상기 전력 성능 개선 요소를 생성하는 단계를 포함할 수 있다.
여기서, 상기 1차 개선 단계는, 상기 전력 성능 개선 요소에 대한 변경 준비가 이루어지는 전력 변경 준비 단계; 및 상기 변경 준비 이후에 상기 전력 성능 개선 요소에 대한 수정 작업이 진행되는 전력 소스 수정 단계를 포함할 수 있다.
여기서, 상기 전력 변경 준비 단계는, 전력 개선 요소 데이터 베이스를 준비하는 단계; 상기 전력 개선 요소 데이터 베이스 중 상기 전력 성능 개선 요소에 대응되는 전력 개선 요소 소스를 확인하는 단계; 및 상기 확인된 전력 개선 요소 소스를 상기 전력 성능 개선 요소와 함께 표시하는 단계를 포함할 수 있다.
여기서, 상기 전력 소스 수정 단계는, 상기 전력 개선 요소 데이터 베이스에서 추천된 전력 개선 요소 소스로 상기 수정 작업을 진행하는 단계를 포함할 수 있다.
여기서, 상기 성능 확인 단계는, 성능 가시화 모듈을 통해 상기 실행 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함할 수 있다.
여기서, 상기 성능 확인 단계는, 소스 네비게이터 모듈을 통해 소스 코드 분석을 진행하는 분석 단계; 상기 분석 단계 후 상기 분석 결과에 따라 성능 데이터 프레임을 생성하는 단계; 상기 소스 네비게이터 모듈에서의 결과물을 상기 성능 데이터 프레임에 삽입하여 성능 데이터 베이스를 완성하는 단계; 및 성능 가시화 모듈을 통해 상기 성능 데이터 베이스에 기초하여 상기 실행 성능 개선 요소를 선정하고 이를 가시화하는 단계를 포함할 수 있다.
여기서, 상기 2차 개선 단계는, 상기 실행 성능 개선 요소에 대한 변경 준비가 이루어지는 성능 변경 준비 단계; 및 상기 변경 준비 이후에 상기 실행 성능 개선 요소에 대한 수정 작업이 진행되는 성능 개선 소스 수정 단계를 포함할 수 있다.
여기서, 상기 성능 변경 준비 단계는, 성능 개선 요소 데이터 베이스를 준비하는 단계; 상기 성능 개선 요소 데이터 베이스 중 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하는 단계; 및 상기 확인된 성능 개선 요소 소스를 상기 실행 성능 개선 요소와 함께 표시하는 단계를 포함할 수 있다.
여기서, 상기 성능 개선 소스 수정 단계는, 상기 성능 개선 요소 데이터 베이스에서 추천된 개선 요소 소스로 상기 수정작업을 진행하는 단계를 포함할 수 있다.
본 발명의 다른 실시예인 전력 개선을 위한 소프트웨어 소스 코드 변경 장치는, 소프트웨어의 소스 코드를 입력받기 위한 입력부; 및 상기 소스 코드를 분석하여 전력 성능 개선 요소를 확인하고, 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하고, 제 1 성능 개선 후 상기 소스코드를 분석하여 실행 성능 개선 요소를 확인한 후, 상기 실행 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행하는 제어부를 포함할 수 있다.
여기서, 상기 전력 개선을 위한 소스 코드 변경 장치는, 디스플레이부를 더 포함하고, 상기 제어부는, 상기 전력 성능 개선 요소를 가시화하여 시각적으로 상기 디스플레이부에 표시하는 전력 가시화 모듈을 포함할 수 있다.
상술한 구성을 가진 본 발명의 일실시예에 따르면, 인베디드 시스템에 사용되는 소프트웨어의 소스 코드 중 성능 개선이 필요한 소스 코드에 대하여 적절한변경을 가능하게 함으로써, 저전력 설계가 용이하게 된다.
도 1은 본 발명의 일실시예인 전력 개선을 위한 소프트웨어 코드 변경 방법을 설명하기 위한 플로우차트
도 2는 본 발명의 다른 실시예인 전력 개선을 위한 소프트웨어 소스 코드 변경 장치를 설명하기 위한 블록 구성도.
도 3 내지 도 6은 본 발명의 일실시예인 전력 개선을 위한 소프트웨어 코드 변경 방법 중 전력 개선 단계에 대한 설명을 위한 이미지도면.
도 7 내지 도 11은 본 발명의 일실시예인 전력 개선을 위한 소프트웨어 코드 변경 방법 중 성능 개선 단계에 대한 설명을 위한 이미지 도면.
이하, 본 발명의 바람직한 실시 예들을 첨부된 도면을 참고하여 더욱 상세히 설명한다. 본 발명의 실시 예들은 여러 가지 형태로 변형될 수 있으며, 본 발명의 범위가 아래에서 설명하는 실시 예들에 한정되는 것으로 해석되어서는 안 된다. 본 실시예들은 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 더욱 상세하게 설명하기 위해서 제공되는 것이다.
도 1은 본 발명의 일실시예인 전력 개선을 위한 소프트웨어 소스 코드 변경 방법을 설명하기 위한 플로우차트이고, 도 2는 본 발명의 다른 실시예인 전력 개선을 위한 소프트웨어 소스 코드 변경 장치를 설명하기 위한 블록 구성도이며, 도 3 내지 도 7은 본 발명의 일실시예인 전력 개선을 위한 소프트웨어 코드 변경 방법 중 전력 개선 단계에 대한 설명을 위한 이미지도면이고, 도 8 내지 도 11은 본 발명의 일실시예인 전력 개선을 위한 소프트웨어 코드 변경 방법 중 성능 개선 단계에 대한 설명을 위한 이미지 도면이다.
우선, 도 1을 참조하여 다음과 같은 과정을 통해 본 발명에 따른 일실시예인 전력 개선을 위한 소프트웨어 소스 코드 변경 방법을 간단하게 설명하고, 그 다음 도 2를 참조하여 본 발명의 다른 실시예인 전력 개선을 위한 소프트웨어 소스 코드 변경 장치를 간단하게 설명한 후, 그 구체적인 동작을 도 3 내지 도 11을 참조하여 설명하도록 한다.
도 1에 도시된 바와 같이, 우선, 소스 입력부를 통해 소프트웨어의 고수준 언어 소스코드를 입력 받는다(S1). 그 다음 상기 소스 코드를 분석하여 전력 성능 개선 요소를 확인한다(S2). 그리고 나서 전력 성능 개선 요소에 대하여 제 1 수정을 진행하여 제 1 성능 개선을 진행한다. 이 때 제 1 성능 개선은 전력 소모를 줄이기 위한 개선이 해당될 수 있다. 제 1 성능 개선 후 상기 소스코드를 다시 분석하여 실행 성능 개선 요소를 확인한다(S4). 그 다음 실행 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행한다(S5).
이와 같은 동작이 이루어지는 소프트웨어 소스 코드 변경 장치의 구조는 도 2를 통해 알 수 있다. 도 2를 참조하면, 본 발명에 따른 전력 개선을 위한 소프트웨어 소스 코드 변경 장치는 크게 소스 입력부(10), 디스플레이부(20), 메모리(30), 수정 입력부(40) 및 제어부(100)를 포함하여 구성될 수 있다.
소스 입력부(10)는 S1단계에서의 소프트웨어의 고수준 언어 소스코드를 입력받기 위한 구성요소로서 유무선 통신 모듈, 또는 USB 단자와 같은 데이터 입력 단자가 이에 해당할 수 있다.
디스플레이부(20)는, 후술하는 성능가시화 모듈 및 전력 가시화 모듈에 의하여 가시화된 성능 개선 요소를 시각적으로 표시하기 위한 구성요소이다.
메모리(30)는 성능개선 요소 DB(31) 및 전력 개선 요소 DB(33) 등의 데이터 베이스를 저장하고, 본 발명에 따른 전력 개선을 위한 소프트웨어 소스 코드 변경 방법에 따른프로그램을 저장하기 위한 구성요소이다.
수정 입력부(40)는, 사용자에 의한 수정작업을 위한 구성요소로서 키보드나 마우스와 같은 사용자 입력 유닛이 이용될 수 있다.
제어부(100)는, 상기 소스 코드를 분석하여 전력 성능 개선 요소를 확인하고, 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하고, 제 1 성능 개선 후 상기 소스코드를 분석하여 실행 성능 개선 요소를 확인하는 전력 확인한 후, 상기 실행 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행하는 구성요소이다. 제어부는 소스 네비게이터 모듈(111), 성능 데이터 프레임 생성 모듈(112), 성능 데이터 생성 모듈(113), 성능 가시화 모듈(114), 전력 측정 모듈(121), 전력 소스 네비게이터 모듈(122), 그리고 전력 가시화 모듈(123)을 포함하여 구성될 수 있다.
이하에서는 상술한 구성을 가진 전력 개선을 위한 소프트웨어 소스 코드 변경 장치에서의 동작에 대하여 도 1 및 도 3 내지 도 11을 참조하여 설명하도록 한다.
우선 전력 성능 개선 작업(1차 개선 작업)이 진행된다. 상기 소스 코드를 분석하여 전력 성능 개선 요소를 확인한다. 이 때 전력 측정 환경을 준비한 다음 상기 소프트웨어를 실행하여 1차 전력 측정을 제 1 전력 정보를 생성하는 하는 단계; 전력 측정 프로젝트를 생성하여 전력 측정 환경을 준비하는 전력 측정 준비 단계: 상기 소스코드를 입력한 상태에서 상기 전력 측정 프로젝트를 실행하는 프로젝트 실행 단계; 상기 프로젝트 실행 단계후 2차 전력 측정을 하여 제 2 전력 정보를 생성하는 단계; 상기 제 1 전력 정보와 제 2 전력 정보를 비교하여 상기 전력 성능 개선 요소를 생성하는 단계를 포함하여 이루어질 수 있다. 이것은 도 3에서와 같이 Keil uVision IDE에서 상기 프로젝트가 생성될 수 있다.
이와 같이 전력 성능 개선 요소를 확인하게 되면, 제 1 성능 개선 작업이 이루어지게 되는데, 상기 전력 성능 개선 요소에 대한 변경 준비가 이루어지는 전력 변경 준비 단계; 및 상기 변경 준비 이후에 상기 전력 성능 개선 요소에 대한 수정 작업이 진행되는 전력 소스 수정 단계를 포함하게 된다.
여기서 상기 전력 변경 준비 단계는, 전력 개선 요소 데이터 베이스를 준비하는 단계; 상기 전력 개선 요소 데이터 베이스 중 상기 전력 성능 개선 요소에 대응되는 전력 개선 요소 소스를 확인하는 단계; 상기 확인된 전력 개선 요소 소스를 상기 전력 성능 개선 요소와 함께 표시하는 단계; 상기 전력 소스 수정 단계는, 상기 전력 개선 요소 데이터 베이스에서 추천된 전력 개선 요소 소스로 상기 수정 작업을 진행하는 단계를 포함하게 된다.
위 전력 성능 개선 요소의 개선인 제 1 수정은 실질적으로 후술하는 제 2 수정과 매우 유사하게 진행된다. 예를 들어 전력 성능 개선을 위해 소스코드를 입력하고, 전력 측정 프로젝트를 실행한 예가 도 4에 도시되어 있다. 또한, 전력 측정 단계의 예가 도 5에 도시되어 있다. 도 5에서는 도 4의 디버그 모드에서 전력 측정을 진행한 경우로서, 프로그램의 시작점과 종료지점이 나타나며, 현재 전류, 시작점과 종료점의 델타 전류값, 평균 전류값, 누적 전류값등이 차례로 측정된다. 이 때 누적 전류값을 이용하여 전력 개선 요소 소스를 확인할 수 있게 된다.
도 6은 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행된 후, 수정 전과 수정전을 비교하여 얼마나 전력 성능이 개선되었는지를 나타내는 이미지도이다. 도시된 바와 같이, 개선전의 전류량 및 전력량에 비하여 개선 후 상당폭의 저전력 성능 개선이 이루어졌음을 확인할 수 있다.
그 다음 실행 성능 개선 작업(2차 개선 작업)이 진행된다. 제 1 차 성능 개선 작업후 상기 소스 코드를 분석하여 다음과 같은 동작을 진행한다.
전술한 바와 동일하게 소스 코드 입력 단계는 소스 입력부(30)를 통해 이루어진다. 예컨대 소스 코드를 소스 네비게이터 모듈(111)에 입력한다. 소스 네비게이터 모듈(111)는 오픈 소스 코드 분석 도구이다. 예를 들면, C:/Project/SN/SN-NG4.4/bin/filelist.dat에 타겟 소스의 주소를 입력한다. 이렇게 입력된 소스 코드는 소스 네비게이터 모듈(111)의 파서(parser)에 의해 소스 코드 분석이 진행된다. 소스 네비게이터 모듈(11)의 파서에 의해 실행 결과물의 예시가 도 7이며, 여기서는 C:\Project\SN\SN-NG4.4\bin\SNDB4 에서 SNDB 파일들을 확인할 수 있으며, 이 파일들은 바이너리 파일이여서 정제과정이 필요하다. 정제과정에서 사용하는 프로그램은 dbdump.exe 파일이다. dbdump.exe는 바이너리(binary)파일 형태의 대상 데이터를 텍스트로 변환하여 저장하는 파일이다.
그 다음 상기 분석 결과에 따라 성능 데이터 프레임을 생성한다. 실행명령어 $ java-jar Extranctinfo.jar "./SN/SN-NG4.4/bin/SNDB4" "/SN/SN-NG4.4/bin/dbdump.exe"에 의해 ExtractInfo.jar의 DB.java 파일의 init() 메서드에서 성능데이터 프레임을 생성한다(도 8 참조).
그 다음, 소스 네비게이터 모듈(111)에서의 결과물을 성능 데이터 프레임에 SQLITE를 활용하여 성능 개선 요소 데이터 베이스(31)를 완성한다. 즉, 실행명령어 $ java-jar Extranctinfo.jar "./SN/SN-NG4.4/bin/SNDB4" "./SN/SN-NG4.4/bin/dbdump.exe"에 의해 생성된 데이터 베이스에 소스 네비게이터 모듈(111)의 결과물들을 jdbdump.exe 파일로 insert한다. 생성된 테이블 스키마는 도 9와 같다.
그 다음 성능 가시화 모듈을 통해성능 개선 요소를 산정하고 이를 가시화한다. Generate Dot를 활용하여 실행명령어 $ java-jar GenrateDotContents(SN)_.jar "./graphviz/dot.exe” “ranksep=2.0;” “11111” “C” GenarateDotContents(SN)_.jar의 GenarateDot.java 파일의 DrawRect()메서드에서 성능지표를 추출할 수 있는 쿼리문을 작성한다. 결과물을 Graphviz에 입력하고 실행하면 성능가시화 그래프가 나온다. 그 예가 도 10이며, 사용자는 도 10을 통해 실행속도를 저하하는 요소들(적색으로 표시됨), 즉 실행 성능 개선 요소들을 시각적으로 확인할 수 있게 된다.
그 다음, 성능 개선 요소에 대하여 제 2 수정을 진행하여 성능 개선 작업을 한다. 즉, 실행 성능 개선 요소에 대한 변경 준비가 이루어지는 성능 변경 준비 단계와 상기 변경 준비 이후에 상기기 실행 성능 개선 요소에 대한 사용자의 수정 작업이 진행되는 성능 개선 소스 수정 단계를 통해 이루어지며, 성능 개선 요소 데이터 베이스를 준비하는 단계; 상기 성능 개선 요소 데이터 베이스 중 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하는 단계; 상기 확인된 성능 개선 요소 소스를 상기 실행 성능 개선 요소와 함께 표시하는 단계를 포함하고, 상기 성능 개선 소스 수정 단계는, 상기 성능 개선 요소 데이터 베이스에서 추천된 개선 요소 소스로 상기 수정작업을 진행하는 단계를 포함할 수 있다.
즉, 성능 개선 요소들에 대한 수정 작업은 성능 가시화 모듈에 의해 수정이 필요한 "실행 성능 개선 요소"가 타 요소와 다르게 표시된 상태에서, 사용자는 실행 성능 개선요소에 대한 수정작업을 진행하게 된다. 이 때, 성능 개선 요소 데이터 베이스가 메모리에 저장되어 있고, 저장된 성능 개선 요소 데이터 베이스에서 제어부가 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하고, 이를 실행 성능 개선 요소와 함께 표시한 후 사용자의 선택에 의해 실행 성능 개선 요소가 자동으로 수정될 수 있다. 또는 수작업으로 진행될 수도 있다.
그 예를 들면 다음과 같다.
우선 정의된 성능저하 요소의 패턴은 3가지로 예시한다.
Pattern Name
Code Pattern
Regular Expression Rule
Loop unrolling & Loop Down Count
(인수가 증가하는 반복문)
int sum = 0;
for(int i=0; i<1000;i++){
sum += array[i];
}
[a-zA-Z_]([a-zA-Z_0-9])* [&<] ([a-zA-Z_0-9])+ ; [a-zA-Z_]([a-zA-Z_0-9])* \+\+
Unnecessary control statements of the inner loops
(반복문 내 불필요한 조건문)
for(i=0; i<1000;i++){
if(i & 0x01) {
do_odd(i);
}else{
do_even(i);
}
}
[a-zA-Z_]([a-zA-Z_0-9])* [&<] ([a-zA-Z_0-9])+ ; [a-zA-Z_]([a-zA-Z_0-9])* \+\+ \) \{ [\s\S]* if \(
Multiple if then else
(다수의 if then else문)
if(a==1){
}else if(a==2){
}else if(a==3){
}else if(a==4){
}

if \( [a-zA-Z_0-9\b\s\+\/\*\%%\[\]]* [&<!=&>&|]* [a-zA-Z_0-9\b\s\+\/\*\%%\[\]]+ \)
c/c++ 언어로 작성된 프로그램을 정적 분석하는 오픈 소스 도구인 cppcheck와 정규 표현식을 통해 소스코드를 검촐하고 실행 명령어 중 잘못된 패턴을 검출하고, 이것을 개선하는 과정을 거치게 된다. 예컨대, PropertiesWnd.cpp파일에서 Loop unrolling & Loop Down Count를 리팩토링하는 방식, Unnecessary control statements of the inner loops를 리팩토링하는 방식, Multiple if then else를 리팩토링 하는 방식으로 이루어진다. 이와 같은 2차 성능 개선 작업이 이루어진 다음 성능 가시화모듈을 통해 평가를 해보면, 도 11과 같이 성능 저하 요소의 갯수(적색으로 표시된 부분)가 감소하였음을 알 수 있다.

Claims (13)

  1. 소프트웨어의 고수준 언어 소스 코드를 입력받는 소스 코드 입력 단계;
    상기 소스 코드를 분석하여 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인 단계, 상기 전력 확인 단계는 전력 가시화 모듈을 통해 상기 전력 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함함;
    상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하는 1차 개선 단계;
    상기 1차 개선 단계 후, 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하는 성능 확인 단계; 및
    상기 실행 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행하는 2차 개선 단계;를 포함하고,
    상기 1차 개선 단계는,
    상기 전력 성능 개선 요소에 대한 변경 준비가 이루어지는 전력 변경 준비 단계; 및
    상기 변경 준비 이후에 상기 전력 성능 개선 요소에 대한 수정 작업이 진행되는 전력 소스 수정 단계를 포함하고,
    상기 전력 변경 준비 단계는,
    전력 개선 요소 데이터 베이스를 준비하는 단계;
    상기 전력 개선 요소 데이터 베이스 중 상기 전력 성능 개선 요소에 대응되는 전력 개선 요소 소스를 확인하는 단계; 및
    상기 확인된 전력 개선 요소 소스를 상기 전력 성능 개선 요소와 함께 표시하는 단계를 포함하고,
    상기 전력 소스 수정 단계는,
    상기 전력 개선 요소 데이터 베이스에서 추천된 전력 개선 요소 소스로 상기 수정 작업을 진행하는 단계를 포함하는, 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 전력 확인 단계는,
    상기 소프트웨어를 실행하여 1차 전력 측정을 제 1 전력 정보를 생성하는 하는 단계;
    전력 측정 프로젝트를 생성하여 전력 측정 환경을 준비하는 전력 측정 준비 단계:
    상기 소스코드를 입력한 상태에서 상기 전력 측정 프로젝트를 실행하는 프로젝트 실행 단계;
    상기 프로젝트 실행 단계후 2차 전력 측정을 하여 제 2 전력 정보를 생성하는 단계; 및
    상기 제 1 전력 정보와 제 2 전력 정보를 비교하여 상기 전력 성능 개선 요소를 생성하는 단계를 포함하는, 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제 1 항에 있어서,
    상기 성능 확인 단계는,
    성능 가시화 모듈을 통해 상기 실행 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함하는, 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
  8. 제 1 항에 있어서,
    상기 성능 확인 단계는,
    소스 네비게이터 모듈을 통해 소스 코드 분석을 진행하는 분석 단계;
    상기 분석 단계 후 상기 분석 결과에 따라 성능 데이터 프레임을 생성하는 단계;
    상기 소스 네비게이터 모듈에서의 결과물을 상기 성능 데이터 프레임에 삽입하여 성능 데이터 베이스를 완성하는 단계; 및
    성능 가시화 모듈을 통해 상기 성능 데이터 베이스에 기초하여 상기 실행 성능 개선 요소를 선정하고 이를 가시화하는 단계를 포함하는, 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
  9. 제 8 항에 있어서,
    상기 2차 개선 단계는,
    상기 실행 성능 개선 요소에 대한 변경 준비가 이루어지는 성능 변경 준비 단계; 및
    상기 변경 준비 이후에 상기 실행 성능 개선 요소에 대한 수정 작업이 진행되는 성능 개선 소스 수정 단계를 포함하는, 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
  10. 제 9 항에 있어서,
    상기 성능 변경 준비 단계는,
    성능 개선 요소 데이터 베이스를 준비하는 단계;
    상기 성능 개선 요소 데이터 베이스 중 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하는 단계; 및
    상기 확인된 성능 개선 요소 소스를 상기 실행 성능 개선 요소와 함께 표시하는 단계를 포함하는, 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
  11. 제 10 항에 있어서,
    상기 성능 개선 소스 수정 단계는,
    상기 성능 개선 요소 데이터 베이스에서 추천된 개선 요소 소스로 상기 수정작업을 진행하는 단계를 포함하는, 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
  12. 삭제
  13. 삭제
KR1020200153896A 2020-11-17 2020-11-17 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 KR102523329B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200153896A KR102523329B1 (ko) 2020-11-17 2020-11-17 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200153896A KR102523329B1 (ko) 2020-11-17 2020-11-17 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법

Publications (2)

Publication Number Publication Date
KR20220067324A KR20220067324A (ko) 2022-05-24
KR102523329B1 true KR102523329B1 (ko) 2023-04-19

Family

ID=81807573

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200153896A KR102523329B1 (ko) 2020-11-17 2020-11-17 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법

Country Status (1)

Country Link
KR (1) KR102523329B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100503776B1 (ko) * 2005-03-12 2005-07-26 (주)위즈베이스 웹 어플리케이션 성능 분석 및 튜닝 방법
KR101225577B1 (ko) * 2010-12-07 2013-01-24 한국과학기술연구원 어셈블리 언어 코드의 분석 장치 및 방법
KR102006507B1 (ko) * 2011-09-02 2019-10-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 스크립트 코드를 가진 마크업 콘텐츠의 고속 프레젠테이션 기법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100669242B1 (ko) * 2004-12-15 2007-01-15 한국전자통신연구원 크로스 개발 환경에서의 임베디드 소프트웨어 최적화 및분석을 위한 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100503776B1 (ko) * 2005-03-12 2005-07-26 (주)위즈베이스 웹 어플리케이션 성능 분석 및 튜닝 방법
KR101225577B1 (ko) * 2010-12-07 2013-01-24 한국과학기술연구원 어셈블리 언어 코드의 분석 장치 및 방법
KR102006507B1 (ko) * 2011-09-02 2019-10-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 스크립트 코드를 가진 마크업 콘텐츠의 고속 프레젠테이션 기법

Also Published As

Publication number Publication date
KR20220067324A (ko) 2022-05-24

Similar Documents

Publication Publication Date Title
CN106021103B (zh) 一种基于代码变更的移动应用测试脚本自动维护方法
CN107239392B (zh) 一种测试方法、装置、终端及存储介质
CN112015628B (zh) 一种智能合约函数级动态监测分析系统及实现方法
CN101710378B (zh) 一种基于序列模式挖掘的软件安全漏洞检测方法
US9047399B2 (en) Generating visualization from running executable code
US20080127113A1 (en) Method and system for implementing watchpoints
CN103577168A (zh) 测试用例创建系统及方法
US10169002B2 (en) Automated and heuristically managed solution to quantify CPU and path length cost of instructions added, changed or removed by a service team
EP2557499A1 (en) A system and method for automatic impact variable analysis and field expansion in mainframe systems
CN107045477B (zh) 一种可进行多维度检测的质量评估平台
US20110320876A1 (en) Systems and methods for processing source code during debugging operations
CN110688307A (zh) JavaScript代码检测方法、装置、设备和存储介质
CN105335246A (zh) 一种基于问答网站分析的程序崩溃缺陷自动修复方法
CN105279092A (zh) 一种软件测试的方法及装置
CN105468525A (zh) 基于c代码模型的构件接口单元测试方法
CN112347120B (zh) 一种基于复杂sql的自动优化方法和装置
KR102523329B1 (ko) 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법
KR102413994B1 (ko) 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치
CN109508204B (zh) 一种前端代码质量检测方法及装置
CN109471637B (zh) 电路图的审查脚本调试方法
CN116893960A (zh) 代码质量检测方法、装置、计算机设备和存储介质
CN113836023B (zh) 一种基于体系结构交叉检查的编译器安全性测试方法
CN115438026A (zh) 一种数据库扫描方法、装置、设备、存储介质及产品
Saraiva et al. Towards energy-aware coding practices for Android
CN112148581A (zh) 代码规范检查方法、装置、系统及存储介质

Legal Events

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