문제
응용 프로그램 내에서 리소스를 줄일 수있는 방법은 무엇입니까? 코드를 줄이고 다시 작성하고, 줄 번호를 줄이고, 주석을 줄이고, 댓글을 줄이고, 최종 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은 많은 문제를 일으킬 것입니다. 카스퍼 스키는 그렇게 많이합니다!