2008-11-11 30 views
8

Tôi có cùng phiên bản delphi, bpl, thành phần, mọi thứ. Và trong ba máy, các tệp thực thi kết quả có kích thước khác nhau. Điều gì khác có thể ảnh hưởng đến kích thước của exe?Điều gì có thể ảnh hưởng đến kích thước thực thi của Delphi?

Trong máy tính của tôi tôi nhận được kích thước này (Vista 6.0.6001):

4.547.584 bytes 

Trong máy đồng nghiệp của tôi, anh nhận được (XP SP3 2600/01/05):

4.530.688 bytes 

Trong một phần ba colleage, ông nhận được: (XP 5.1.2600 SP2)

4.527.104 bytes 

Phiên bản hệ điều hành có ảnh hưởng đến kích thước exe đã biên dịch không?

+0

Sự khác biệt lớn? Bạn có thể đưa ra ví dụ không? – vIceBerg

+0

vlceBerg, thêm các ví dụ như bạn đã hỏi. –

+0

Phiên bản hệ điều hành giống nhau? Cùng SP được cài đặt? Cùng một hệ thống tập tin? – vIceBerg

Trả lời

10

Có vẻ như đó là sự khác biệt về cấu hình, hoặc nếu có thể bạn có các phiên bản khác nhau của các thành phần được cài đặt giữa ba máy. Tôi sẽ đề nghị tạo một mẫu trống và thử nó trên tất cả 3 sau khi bạn xác minh rằng các thiết lập xây dựng là như nhau. Nếu đó là như vậy thì thêm một số thành phần của bên thứ 3 cho đến khi bạn tìm thấy một thành phần khác.

Ngoài ra, bạn có thể có phiên bản Delphi khác (phiên bản chính hoặc nhỏ/cập nhật).

+0

Thanx Jim. Sẽ thử và đăng kết quả ASAP –

+0

Xin lỗi, Jim. Không chính xác. Xem bài đăng của tôi cho các liên kết giải thích lý do. –

+0

Thực ra Ken, nó có thể là cả hai, nhưng tôi không nhận thức được vấn đề bạn đã chỉ ra. –

3

Với Delphi/BCB đây là một vài yếu tố có thể ảnh hưởng đến kích thước:

Build Your Configuration: Phát hành Chế độ không liên kết trong phần debug vào EXE (theo mặc định) như vậy là nhỏ hơn. bạn cũng có thể nhận được tăng cường từ tối ưu hóa mã.

Liên kết với RTL động: Nếu được bật, EXE sẽ nhỏ hơn nhưng bạn sẽ yêu cầu thư viện bên ngoài khả dụng.

Xây dựng với Gói thời gian chạy: Nếu được bật, bạn liên kết động với gói thời gian chạy bạn sử dụng thay vì liên kết trực tiếp với EXE của bạn. Điều này có thể dẫn đến sự khác biệt về kích thước lớn nhất.

Đó là các yếu tố khác nhưng ở trên có xu hướng là những yếu tố chính tôi gặp phải.

+0

Steve - đó là một câu trả lời tuyệt vời cho một câu hỏi hoàn toàn khác ;-) – Roddy

7

Sự khác biệt gần như chắc chắn đến từ các cài đặt trình biên dịch khác nhau giữa các máy. Ví dụ: bật hoặc tắt tính năng Kiểm tra phạm vi sẽ làm thay đổi kích thước kết quả của tệp thực thi.

Một trong những điều tốt đẹp về các phiên bản mới hơn của Delphi là sử dụng MSBuild, có thể dễ dàng đảm bảo rằng các cài đặt cho bất kỳ bản dựng nào giống nhau.

+0

Các tệp DPR của chúng tôi giống nhau, chắc chắn. Kiểm tra phạm vi là tùy chọn dự án. Tôi không thể thấy bất kỳ tùy chọn IDE nào có thể can thiệp vào kích thước của kết quả thực thi. –

1

IIRC, tái biên dịch sau khi thực hiện những thay đổi nhỏ cũng có thể để lại cruft đặt xung quanh - một fo tác dụng phụ của trình biên dịch thông minh, tôi đoán:}

0

Trên thực tế nó là thú vị hơn so với.

Thậm chí xây dựng lại cùng một ứng dụng trên cùng một máy, nhiều lần liên tiếp, hoàn toàn KHÔNG thay đổi cấu hình nào giữa các biên dịch, tạo ra các tệp thực thi có kích thước hơi khác nhau. Tôi đã xây dựng một dự án cụ thể 10 lần và thu được 10 (!) Kích thước thực thi khác nhau - một kích thước khác nhau mỗi lần!

Tôi nhận thấy rằng hiện tượng này chỉ xảy ra trên các dự án có kích thước/độ phức tạp đủ.

Nếu bạn làm điều này trên một dự án tương đối đơn giản, tệp thực thi sẽ có cùng kích thước, mặc dù vẫn sẽ có sự khác biệt nội bộ (nếu bạn so sánh nhị phân). Tôi không có thời gian để điều tra điều này ngay bây giờ, nhưng tôi hơi tò mò.

Lưu ý rằng chỉ cần biên dịch, tức là chỉ cần liên kết lại ứng dụng, không thay đổi kích thước của kết quả thực thi, nhưng nó thay đổi nội dung của nó (các tệp nhị phân được tạo không giống nhau).

1

Thực ra, đó là sự cố xảy ra trong một thời gian khá dài. Xem

CodeGear Quality Control

Borland Delphi newsgroups

thảo luận gần đây của này trên Delphi newsgroups (http xem).

Nó hoàn toàn không liên quan gì đến sự khác biệt trong cài đặt thành phần hoặc bất kỳ thứ gì tương tự; trên thực tế, tham chiếu cuối cùng đề cập đến một số việc cần làm với dấu thời gian được chèn vào ứng dụng trên mỗi biên dịch/bản dựng. Ngoài ra, nếu bạn đang xây dựng và bao gồm thông tin phiên bản và có số bản dựng được đặt thành tự động, điều này cũng sẽ gây ra sự khác biệt nhị phân.

4

Hmmm ...

sizeof (XPSP2.exe) < sizeof (XPSP3.exe) < sizeof (Vista.exe)

Kết luận:

Các sau các phiên bản của Windows, thêm "phụ" được chèn ngẫu nhiên để thêm độ tin cậy. Nếu cần nhiều không gian hơn thì nó phải mạnh mẽ hơn, và có lẽ nó được mã hóa bởi những kỹ sư giỏi nhất thế giới! :-) (xin lỗi - Tôi đã làm việc tại Microsoft quá lâu!)

+0

điều này chắc chắn là một xu hướng thống kê :) – mjn

Các vấn đề liên quan