Tôi đã lập trình một số GUI MATLAB (không sử dụng GUIDE), chủ yếu để xem hình ảnh và một số thao tác đơn giản khác (chẳng hạn như chọn điểm và vẽ một số dữ liệu từ hình ảnh).MATLAB: GUI dần dần bị chậm hơn
Khi GUI bắt đầu, tất cả các thao tác được thực hiện nhanh chóng. Tuy nhiên, khi GUI được sử dụng (hiển thị các khung khác nhau từ khối lượng 3D/4D và hoàn thiện các thao tác nêu trên), nó bắt đầu chậm dần, đạt đến điểm quá chậm để sử dụng phổ biến.
Tôi muốn nghe một số đầu vào liên quan đến:
- chiến lược khả thi để tìm hiểu lý do tại sao GUI là nhận được chậm hơn;
- Thực hành lập trình GUI MATLAB tốt để tránh điều này;
- Tham chiếu có thể giải quyết những vấn đề này.
Tôi đang sử dụng set/getappdata để lưu biến trong hình chính của GUI và liên lạc giữa các hàm.
(Tôi ước gì tôi có thể cung cấp một ví dụ làm việc tối thiểu, nhưng tôi không nghĩ rằng đó là phù hợp trong trường hợp này bởi vì đây chỉ xảy ra trong GUIs hơi phức tạp hơn.)
Thanks a lot.
EDIT:(Báo cáo về một số kết quả sử dụng các hồ sơ :)
tôi đã sử dụng các hồ sơ trong hai dịp:
- immediatly sau khi bắt đầu giao diện;
- sau khi chơi với nó một thời gian, cho đến khi nó bắt đầu quá chậm.
tôi thực hiện các thủ tục chính xác như nhau trong cả hai hoạt động profiling, được chỉ đơn giản là di chuyển chuột xung quanh GUI (cùng "con đường" cả hai lần).
Kết quả hồ sơ như sau:
Tôi gặp khó khăn trong việc giải thích những kết quả ... Tại sao số lượng cuộc gọi của chức năng nhất định (chẳng hạn như impixelinfo
) nên lớn hơn trong trường hợp thứ hai?
Mọi ý kiến?
Cảm ơn rất nhiều.
Hãy thử điều này: forceGarbageCollection(). Đây là loại điều liên quan đến java. –
Bạn đã thử theo dõi việc sử dụng bộ nhớ của mình trong khi chạy GUI trong thời gian dài - có thường là rất cao hay không, ví dụ, tăng dần theo thời gian khi GUI chậm lại? Bạn đang sử dụng chỉ MATLAB, hoặc là bạn gọi ra mã Java hoặc MEXed C bất cứ nơi nào? Bạn có sử dụng các biến MATLAB thông thường hay bạn đang sử dụng các đối tượng - và nếu có, chúng có giá trị hoặc xử lý các đối tượng lớp không? –
@SamRoberts: Không, tôi đã không cố gắng theo dõi việc sử dụng bộ nhớ trong khi chạy GUI. Sẽ làm và báo cáo lại. Về các câu hỏi khác, tôi chỉ sử dụng MATLAB và chỉ các biến thông thường. Cảm ơn. – fnery