2008-08-29 33 views

Trả lời

5

Ngoài các đề xuất đã đề cập, hãy đóng mọi dự án bạn đã mở mà bạn không sử dụng.

Nhấp chuột phong phú vào Dự án trong chế độ xem Điều hướng và chọn "Đóng các dự án không liên quan".

Tùy thuộc vào số dự án bạn đã mở, điều này có thể dẫn đến những cải thiện đáng kể về thời gian biên dịch cũng như tất cả xung quanh hiệu suất.

mike chambers

mesh @ adobe.com

+2

Đáng buồn thay, ngay cả trên 8 của tôi lõi Mac Pro w/12 GB RAM, Flex xây dựng mất mãi mãi cho một đoạn mã nhỏ. Tôi lãng phí rất nhiều thời gian chờ đợi Flex xây dựng. mxmlc trên hộp lõi kép Xeon Linux của tôi không nhiều nếu nhanh hơn. "Đóng các dự án không liên quan" không quan trọng đối với tôi; Tôi chỉ có một dự án mở. –

+1

Chúng tôi có một dự án Flash Builder 4 thực sự lớn, và thời gian biên dịch vẫn là một vấn đề ngay cả trên các máy nhanh nhất. Vấn đề là sự thay đổi nhỏ nhất, ngay cả với các bên trong của một chức năng riêng, dường như gây ra Flash Builder/Flex để xây dựng lại thế giới, hoàn toàn không cần thiết. Có lẽ họ có kế hoạch lớp bộ nhớ đệm vv cho một phiên bản tương lai! –

0

Bạn có thể muốn khám phá trình biên dịch dòng lệnh được tìm thấy trong Flex SDK, mxmlc. Khi tôi nhớ lại, Flex Builder 3 dường như ẩn tất cả các chi tiết về trình biên dịch, nhưng có lẽ có những đối số bạn có thể chắp thêm để giúp bạn tăng tốc biên dịch.

Ví dụ: bạn có thể muốn đặt optimize=false sẽ bỏ qua bước tối ưu hóa bytecode (có thể giảm thời gian biên dịch)? Điều này tất nhiên đến ở mức giá hiệu suất và kích thước tập tin của ứng dụng thực tế.

Tài liệu khác trên mxmlc có thể được tìm thấy tại: http://livedocs.adobe.com/flex/3/html/compilers_13.html.

Chúc may mắn!

9

Không có nhu cầu sử dụng mxmlc trên dòng lệnh chỉ để có thể thêm cờ biên dịch. Nhấn chuột phải vào dự án của bạn trong Flex Navigator, chọn Properties và sau đó là Flex Compiler trong hộp thoại xuất hiện. Ở đó bạn có thể thêm bất kỳ cờ trình biên dịch bổ sung nào.

Không chắc chắn có nhiều việc phải làm, nhiều mã hơn có nghĩa là thời gian biên dịch nhiều hơn, đó chỉ là cách thực hiện. Nếu bạn không thực hiện việc xây dựng bản phát hành (hoặc bất kỳ phiên bản nào được gọi trong Flex Builder), không có khả năng cài đặt trình biên dịch của bạn bao gồm optimize để bắt đầu. Lựa chọn tốt hơn để thử là -incremental (chỉ biên dịch lại các phần đã thay đổi) và -keep-generated-actionscript (dừng trình biên dịch xóa các tệp ActionScript mà nó đã tạo ra từ các tệp MXML của ứng dụng của bạn).

Tôi rất thích sử dụng mxmlc trên dòng lệnh (bằng cách sử dụng Ant) so với Flex Builder. Mặc dù tôi không nghĩ rằng sau này biên dịch chậm hơn, nó cảm thấy chậm chạp hơn theo mọi cách. Sử dụng Ant cũng làm cho nó có thể làm nhiều hơn là chỉ biên dịch khi xây dựng, và biên dịch có điều kiện (chỉ biên dịch một SWF hoặc SWC nếu mã nguồn đã thực sự thay đổi). Hãy xem a blog post of mine để biết thêm thông tin về điều đó.

Những gì bạn có thể thử là Flex Compiler Shell, một công cụ dòng lệnh khác có thể tăng tốc mọi thứ. Về cơ bản nó cố gắng giữ càng nhiều càng tốt trong bộ nhớ giữa các bản dựng, vì vậy không cần phải đợi những thứ như JVM khởi động (trình biên dịch Flex là một ứng dụng Java). Mặt khác, đây là loại Flex Builder làm gì.

1

Đi tới Project-> Properties-> Flex Applications. Tất cả các ứng dụng được liệt kê được biên dịch mỗi lần (mặc dù bạn có một bộ mặc định). Nếu bạn xóa mọi thứ trừ mặc định (đừng lo, nó sẽ không xóa các tệp thực), nó chỉ biên dịch ứng dụng mặc định. Điều này dẫn đến một tốc độ đáng kể cho tôi. Nếu bạn thay đổi ứng dụng mặc định của mình, nó sẽ thêm nó vào danh sách Flex Applications - thêm vào thời gian biên dịch của bạn. Bạn sẽ cần phải duy trì danh sách này để có được biên dịch nhanh nhất.

2

Bạn muốn có ít nhất 4 hợp đồng biểu diễn trên máy tính của mình nếu có thể và đảm bảo ghi đè cài đặt bộ nhớ mặc định mà nhật thực/flexbuilder cung cấp cho ứng dụng.

Nếu bạn không chắc chắn cách thực hiện việc này, bạn có thể tìm ứng dụng Flexbuilder trong/Applications, nhấp chuột phải và chọn "Hiển thị nội dung gói". Sau đó đi vào tệp nội dung và chỉnh sửa tệp eclipse.ini. Chỉnh sửa tập tin đó có các cài đặt bộ nhớ tối thiểu:

-vmargs -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=128m 

Nó cũng đáng giá để đi vào các ưu đãi eclipse/FlexBuilder và để kiểm tra "Hiển thị tình trạng đống" hộp dưới Windows-> Preferences-> General (Đây là trong eclipse với plugin FB, tôi giả định nó cũng có cho FB độc lập).

Tùy chọn này hiển thị bộ nhớ hiện tại ở phía dưới bên phải cửa sổ và có biểu tượng thùng rác nhỏ để bạn có thể bắt buộc thu gom rác.

Tôi cũng khuyên bạn nên tắt tự động xây dựng dự án khi tệp của bạn thay đổi (bạn có thể buộc xây dựng bằng cmd-B).

Chúng tôi đã có một dự án lớn với một vài tệp mô-đun và hiệu suất trong FlexBuilder 3 phù hợp với các bước này.

-1

Thông thường, bản dựng đầu tiên mất nhiều thời gian nhất và sau đó nhanh chóng sau đó. Đó là sử dụng bộ đôi Vista x64 w/core 2.

Nếu không, tôi gần như chắc chắn một lý Intel Core i7 Extreme Edition vi xử lý nâng cấp 965 3.2GHz sẽ tăng tốc độ xây dựng Flex của bạn lên độc đáo .. :) :) :)

0

tôi không sử dụng Flex Builder, nhưng tôi sử dụng Flex SDK biên dịch hàng ngày và tôi đã lãng phí rất nhiều thời gian chờ đợi cho các trình biên dịch mxmlc để làm công việc của mình cho đến khi tôi tìm thấy Flex compiler Shell:

http://blog.zarate.tv/2008/12/07/theres-something-called-flex-compiler-shell/

Mặc dù về mặt lý thuyết Flex Builder đã sử dụng tối ưu hóa này, có thể là đáng để kiểm tra.

+0

Xin lỗi, chỉ nhận ra rằng Theo liên kết với nó: | –

4

Tôi đã tạo đĩa RAM với không gian làm việc và cho phép tối đa 10% thời gian biên dịch tốt hơn. Không nhiều, nhưng một cái gì đó.

1

Tôi luôn tắt "biên dịch tự động" cho Flex. Nó biên dịch quá nhiều, mất quá nhiều thời gian và làm gián đoạn công việc của tôi.

Nếu bạn có nhiều tệp dự án khác nhau và tất cả các tệp cần được biên dịch lại, nhưng bạn cũng có các dự án khác mở và không muốn đóng chúng luôn luôn bạn đang xây dựng, bạn cũng có thể sử dụng Bộ công cụ Eclipse .

Thật không may, Flex Navigator mặc định không hỗ trợ bộ làm việc. Nhưng bạn có thể mở Trình khám phá gói với Cửa sổ/Chế độ xem hiển thị/.... Nhấp vào mũi tên nhỏ màu trắng hướng xuống phía trên và chọn Các yếu tố cấp cao nhất: Bộ làm việc. Sau đó, bạn có thể thêm Bộ làm việc (còn gọi là các nhóm dự án).Mỗi dự án cần phải có ít nhất một bộ làm việc ("Các dự án khác" là mặc định), nhưng có thể ở một vài.

Bây giờ với Project/Build Working Set/... bạn có thể hướng dẫn Eclipse xây dựng tất cả các dự án trong bộ làm việc này, nhưng không có dự án nào khác. Điều này đặc biệt hữu ích nếu bạn nghi ngờ tham chiếu dự án của bạn đôi khi bị hỏng - nếu không xây dựng dự án 'trên cùng' sẽ kích hoạt các bản dựng tiếp theo một cách tự động.

10

Trước hết, bình luận về một số phản ứng:

  1. Không cần phải xác định rõ ràng -incremental trong Flex Builder vì nó sử dụng biên dịch gia tăng theo mặc định.

  2. -keep-generated-actionscript là trình sát thủ hiệu suất vì nó hướng dẫn trình biên dịch viết mã AS3 được tạo cho các thành phần MXML ở giữa trình biên dịch. File I/O ở giữa một trình biên dịch có nghĩa là tạm dừng không cần thiết và sử dụng CPU thấp.

  3. -optimize làm chậm liên kết vì nó hướng dẫn trình liên kết tạo ra các SWF nhỏ hơn. Lưu ý rằng -optimize = true | false không có bất kỳ ảnh hưởng nào đến việc xây dựng các SWC vì các SWC là các thư viện và phải được unoptimized.

  4. Tôi hiếm khi gây rối với cài đặt JVM vì JVM biết rõ công việc của mình và tự chỉnh sửa khá tốt khi chạy. Hầu hết mọi người làm cho vấn đề tồi tệ hơn bằng cách thiết lập các thông số điều chỉnh GC khác nhau. Điều đó nói rằng, có 3 thiết lập hầu hết mọi người hiểu và thiết lập một cách chính xác cho việc sử dụng của họ:

-Xmx (tối đa kích thước heap)

-server hoặc -Khách hàng (HotSpot Server hoặc Client VM)

-XX: + UseSerialGC hoặc -XX: + UseParallelGC (hoặc GC không nối tiếp khác)

máy chủ luôn hoạt động tốt hơn - khoảng 30% khi chạy trình biên dịch Flex. -XX: + UseParallelGC bật bộ thu gom rác song song. lý tưởng cho máy tính đa lõi và khi máy tính vẫn có chu kỳ CPU để dự phòng.

Bạn cũng có thể muốn xem HellFire Compiler Daemon (http://bytecode-workshop.com/). Nó sử dụng nhiều lõi xử lý để biên dịch nhiều ứng dụng Flex cùng một lúc. Bạn cũng có thể chạy trình biên dịch trên máy thứ hai thông qua ổ cắm (giả sử rằng máy thứ hai của bạn có CPU nhanh hơn và nhiều bộ nhớ hơn).

Theo ý kiến ​​của tôi, hãy sử dụng nhiều mô-đun hơn thư viện và sử dụng HFCD.

Hy vọng điều này sẽ hữu ích.

-Clement

+1

Tôi không hiểu điểm của bạn trên bản ghi hành động được bảo trì. Bạn có nói rằng chi phí I/O của bộ nhớ đệm các tài nguyên này lớn hơn chi phí biên dịch lại chúng M SI XÂY DỰNG? Tôi thấy điều đó không thể tin được, bởi vì tôi xây dựng mã của tôi hàng chục lần mỗi ngày. –

1

Như Clement đã nói, sử dụng HellFire Compiler Daemon. Nếu bạn có nhiều mô-đun và nhiều lõi CPU trên máy của bạn, nó có thể biên dịch chúng song song. Một lựa chọn khác là sử dụng IntelliJ (phiên bản thương mại) cung cấp tính năng tương tự.

1

SDK 4.x.x đã giới thiệu lỗi ngớ ngẩn (xem hệ thống lỗi của Adobe, phát hành FB-27440), khiến các dự án với SVN hoặc CVS ​​siêu dữ liệu biên dịch chậm hơn nhiều so với SDK 3.x.x. Cách sửa lỗi, xem here.

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