실행속도 개선

포터블로 빌드된 일렉트론 애플리케이션의 실행 속도를 올리기 위해 다양한 최적화 방법을 적용할 수 있습니다. 여기 몇 가지 주요 방법을 설명드립니다.

1. 애플리케이션 크기 줄이기

애플리케이션 크기를 줄이면 로딩 시간이 단축될 수 있습니다. 불필요한 파일을 제거하고 필요한 파일만 포함되도록 설정합니다.

Webpack 사용

Webpack을 사용하여 애플리케이션을 번들링하고 압축하면 로딩 속도를 개선할 수 있습니다.

npm install --save-dev webpack webpack-cli

webpack.config.js 파일을 생성하고 구성합니다:

const path = require('path');
module.exports = {
  mode: 'production',
  entry: './src/main.js', // 주 진입점 파일
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
  target: 'electron-main',
  node: {
    __dirname: false,
    __filename: false
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
        }
      }
    ]
  }
};

이렇게 설정한 후 npm run build 명령어로 번들링할 수 있습니다.

Electron Builder 설정

Electron Builder 설정에서 불필요한 파일을 제외하도록 설정할 수 있습니다. package.json 파일에 설정을 추가합니다:

{
  "build": {
    "files": [
      "dist/**/*",
      "node_modules/**/*",
      "package.json"
    ],
    "extraFiles": [
      "resources/**/*"
    ],
    "asar": true
  }
}

2. ASAR 아카이브 사용

ASAR 아카이브를 사용하면 애플리케이션 파일을 하나의 아카이브 파일로 묶어 빠르게 로드할 수 있습니다. package.json 파일의 build 설정에 asar: true를 추가합니다.

3. 시작 시간 최적화

애플리케이션 시작 시간 최적화를 위해 코드 레벨에서 할 수 있는 최적화 방법들입니다.

지연 로딩

필요하지 않은 모듈은 애플리케이션 시작 후에 로딩되도록 지연 로딩을 설정합니다.

const { app, BrowserWindow } = require('electron');
let mainWindow;
function createWindow () {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  });
  mainWindow.loadFile('index.html');
  mainWindow.on('closed', function () {
    mainWindow = null
  });
}
app.on('ready', () => {
  createWindow();
  // 지연 로딩 모듈
  setTimeout(() => {
    const someHeavyModule = require('some-heavy-module');
    // Use the module
  }, 1000);
});

필요 없는 모듈 제거

애플리케이션 시작 시 필요하지 않은 모듈을 확인하고 제거합니다. 패키지 크기를 줄이고 로딩 시간을 개선할 수 있습니다.

4. 파일 압축 및 이미지 최적화

이미지 파일과 기타 리소스를 압축하여 애플리케이션 크기를 줄일 수 있습니다. 이를 위해 이미지 압축 도구를 사용합니다.

5. 파일 시스템 접근 최소화

애플리케이션이 파일 시스템에 접근하는 빈도를 최소화하면 성능을 개선할 수 있습니다. 필요한 데이터는 메모리에 로드하여 사용합니다.

6. 하드웨어 가속 사용

Electron에서 하드웨어 가속을 사용하도록 설정하여 성능을 향상시킬 수 있습니다. 기본적으로 활성화되어 있지만, 비활성화된 경우 명시적으로 설정할 수 있습니다.

const { app } = require('electron');
app.commandLine.appendSwitch('enable-gpu-rasterization');
app.commandLine.appendSwitch('enable-zero-copy');
// 기타 하드웨어 가속 옵션 추가

7. 업데이트 및 최적화된 라이브러리 사용

최신 버전의 Electron과 관련 라이브러리를 사용하면 성능 개선이 포함된 업데이트를 활용할 수 있습니다. 프로젝트의 모든 종속성을 최신 버전으로 유지합니다.

npm update