문제

응용 프로그램 내에서 리소스를 줄일 수있는 방법은 무엇입니까? 코드를 줄이고 다시 작성하고, 줄 번호를 줄이고, 주석을 줄이고, 댓글을 줄이고, 최종 EXE를 압축했지만, 이것이 내가 원하는 방식이 아니며, 가변 유형 캐스트를 개선하고, 아이콘 제거, BMP, JPG, 애플리케이션 내부에서 최종 EXE 및 일반적인 자원 소비에서 최대한 작아야합니다. 더 이상 아이디어,이 주제에 대한 좋은 기사 감사합니다

도움이 되었습니까?

해결책

프로그램이 두 번 이상 사용하는 이미지를 이미지 목록 또는 tgraphic 구성 요소에 넣고 데이터 모듈에 넣습니다. 이 글리프를 사용하여 모든 구성 요소를 이미지 목록에 연결하십시오. 객체 검사관을 사용하여 여러 구성 요소에 동일한 글리프를 추가하는 경우 여러 사본으로 끝나면 로딩 시간과 실행 가능 및 작업 세트 크기가 모두 증가합니다.

다른 팁

프로젝트 옵션에서 디버그 정보를 끄는 것은 어떻습니까?

  • 디버그 정보가 없습니다
  • 런타임 확인이 없습니다
  • 가능한 경우 사용하는 외부 장치 수를 줄입니다.

그러나 디버그 정보 칸은 주요 살인자입니다.

나는 댓글을 제거하는 데 시간을 소비하지 않을 것입니다. 컴파일러는 어쨌든 그들을 제거합니다.

외부 서비스 (예 : Amazon S3)에서 이미지를 참조 할 수 있습니다.

실행 파일 크기를 줄이는 좋은 트릭 (실제로 PE- 이미지 크기, DLL에도 적용됨). 재배치 문제가 아닙니다.

재배치를 꺼내십시오!

델파이에서는 다음과 같이 할 수 있습니다.

// Remove relocation table (generates smaller executables) :
// (See http://hallvards.blogspot.com/2006/09/hack12-create-smaller-exe-files.html)
{$SetPEFlags 1} // 1 = Windows.IMAGE_FILE_RELOCS_STRIPPED

건배!

VCL을 떨어 뜨리고 KOL 및 MCK를 사용하십시오. http://kolmck.net/

이것은 급진적이고 매우 큰 변화이지만 Exe 크기를 줄입니다.

델파이가 지금 옵션을 제공하더라도 모든 양식을 자동으로 생성하지 말고 이전 버전의 새로운 양식에 대해 무조건적으로 수행했습니다. 기본 양식 만 작성하고 모달 대화의 표시를 위해 다음 (Pseudo) 코드를 사용하십시오.

procedure TMainForm.OptionDialog(Sender: TObject);
var
  Dlg: TOptionDialog;
begin
  Dlg := TOptionDialog.Create(nil);
  try
    // prepare dialog
    if Dlg.ShowModal = mrOK then begin
      // apply changed settings
    end;
  finally
    Dlg.Free;
  end;
end;

이렇게하면 애플리케이션로드 시간이 줄어들고 특히 많은 컨트롤이있는 복잡한 대화 상자의 경우 전반적인 리소스 사용량을 줄입니다.

먼저 측정 한 다음 최적화하십시오. 응용 프로그램은 얼마나 크고, 얼마나 큰 것이기를 원하십니까?

당신은 걱정하고 있습니까 ...

디스크의 응용 프로그램 .exe 파일의 크기? 그 다음에...

  • 런타임 패키지로 빌드하십시오 ~에. 작은 .exe를 얻을 수 있지만 .bpls도 배포해야합니다.

응용 프로그램에서 사용하는 RAM 메모리? 그 다음에...

  • 런타임 패키지가 꺼져있는 빌드 - 링커는 가장 미사용 패키지 부분을 생략합니다.

애플리케이션 설치 프로그램의 크기? 그 다음에...

  • 런타임 패키지로 빌드하십시오 끄다
  • 이노 설정을 사용하십시오
  • 위의 대부분의 제안은?

설치 후 응용 프로그램의 크기와 패키지/DLL? 그 다음에...

  • 런타임 패키지로 빌드하십시오 끄다, 및 upx
Project -> Options -> Compiler:
===============================
Optimization ON
Debug Information OFF
Local Symbols OFF
Reference Info OFF
Use debug DCUs OFF

Project -> Options -> Packages:
===============================
Build with runtime packages ON (but you will have to distribute your BPLs!)
Note to non-delphi folks:
a BPL is just a DLL, but with magic Delphi dust to make it easier to use.

이 기사는 귀하에게 유용 할 수 있습니다.

이 모든 문제가 정말 가치가 있습니까? 우리는 더 이상 640kb 메모리 시간에 살고 있지 않습니다.

당신이 당신의 exe를 더 작게 원한다면, 패키지와 라이브러리의 동적 연결을 사용하십시오. 그것은 대부분의 부스트를 제공합니다. 또한 모든 리소스 (이미지, 사운드)를 별도의 DLL에 넣으십시오. 댓글을 삭제하고 모든 코드를 하나의 긴 줄으로 작성하여 아무것도 저장하지 않을 것입니다.

일반적으로 더 작은 exe 크기를 원한다면 이전 버전의 Delphi로 이동하십시오.

나는 항상 사용합니다 upx EXE 파일을 압축합니다. 완벽하게 작동하여 종종 요인 2 압축을 초래합니다. 물론 모든 디버그 정보를 비활성화하면 파일 크기를 줄이는 데 도움이됩니다.

메모리 프로파일 러와 같은 것을 사용하십시오 레드 게이트에서 온 것 런타임 메모리 사용에 대한 실시간보기를 얻으려면.

바이러스 바이러스 오 탐정 경보가 있기 때문에 UPX와 Aspack은 많은 문제를 일으킬 것입니다. 카스퍼 스키는 그렇게 많이합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top