Lập trình LabVIEW, 10 thủ thuật quan trọng để tối ưu hoá chương trình.

0
655

Trong quá trình lập trình LabVIEW, để tối ưu hoá code và sự thực thi chương trình của bạn, những điểm sau đây nên được chú ý và tránh mắc phải các lỗi lập trình này.

1.      Trong lập trình LabVIEW có nhiều kiểu dữ liệu khác nhau. Mỗi kiểu dữ liệu chiếm một dung lượng bộ nhớ tương ứng. Kiểm tra và chắc chắn rằng bạn sử dụng đúng kiểu dữ liệu mà ứng dụng của bạn cần. Ví dụ dữ liệu của bạn chỉ là kiểu số nguyên nhưng bạn lại sử dụng một biến số kiểu double. Đây là sự lãng phí bộ nhớ không cần thiết khi lập trình LabVIEW. Điều này rất quan trọng nếu như ứng dụng của bạn có liên quan tới mảng dữ liệu lớn.

2.      2. Hãy cân nhắc khi sử dụng biến Global trong lúc lập trình LabVIEW, bởi vì kiểu biến này sử dụng một lượng khá lớn bộ nhớ. Ngoài việc thiết lập bao nhiêu biến global thì thời gian sử dụng và số lần gọi, đọc, ghi liên quan đến biến global cũng ảnh hưởng tới sự tiêu tốn bộ nhớ của máy bạn.

3.      3. Một thủ thuật lập trình LabVIEW khác mà cũng có thể tiết kiệm được bộ nhớ và tăng tốc độ xử lí của chương trình của bạn là tránh việc sử dụng loại data phức tạp, nhiều tầng lớp (ví dụ như một mảng bao gồm các phần tử là cluster chứa các mảng trong đó)

4.      4. Tránh để xảy ra lỗi Coercion (hiện tượng chấm đỏ xuất hiện tại đầu nối dây của một terminal). Coercion chỉ ra rằng tại một đầu nối dây (in hoặc out) có một sự không tương thích về kiểu biến. Ví dụ như minh hoạ dưới đây. Đầu vào Input của hàm wait(ms) mong muốn nhận được một dữ liệu kiểu số nguyên U32, nhưng nếu như bạn nối vào đó là một dữ liệu kiểu DBL (Double) thì hiện tượng coercion sẽ xảy ra. Dân lập trình vẫn hay gọi hiện tượng này bằng thuật ngữ “ép số”. Bất cứ tài liệu lập trình LabVIEW nào cũng đều nói về hiện tương này và bạn cần phải tránh sự cố này trong khi lập trình LabVIEW.

Học LabVIEW, Dạy LabVIEW, Đào tạo LabVIEW, Lập trình LabVIEW,Tài liệu LabVIEW

5.      5. Bạn sử dụng các mảng (array) và chuỗi (strings) như thế nào? Bạn có cần thiết phải sử dụng cấu trúc vòng lặp ở những nơi mà thực sự không cần? Đôi khi, bạn có thể thay đổi thuật toán để bớt đi việc sử dụng vòng lặp, hoặc cũng có thể xem xét để tổ hợp nhiều vòng lặp lại thành một. Nếu một vòng lặp được triển khai hợp lí trong khi lập trình LabVIEW cũng làm cho tốc độ thực thi chương trình của bạn tăng lên và tốn ít bộ nhớ hơn. Hãy cùng xem xét hai cấu trúc vòng lặp dưới đây để cảnh giác hơn với việc sử dụng vòng lặp của bạn trong quá trình Lập trình LabVIEW.

 Học LabVIEW, Dạy LabVIEW, Đào tạo LabVIEW, Lập trình LabVIEW,Tài liệu LabVIEW

Đặt các nhiệm vụ tính toán ở ngoài vòng lặp mỗi khi có thể, điều đó giảm những sự thực thi code dư thừa (Lặp lại tính toán)

6.      6.Tránh việc sử dụng hàm Build Array bên trong vòng lặp bất cứ khi nào và ở đâu nếu có thể. Điều đó làm giảm sự lặp đi lặp lại việc gọi trình quản lí bộ nhớ khi thực thi chương trình (Memory Manager). Ở ngôn ngữ lập trình LabVIEW, mỗi khi bạn gọi hàm Build array, bộ nhớ phải giành ra một khoảng dung lượng cho toàn bộ mảng mà bạn sắp tạo, chương trình sẽ tốn nhiều tài nguyên hơn để thực thi code. Ngôn ngữ lập trình LabVIEW cho phép bạn thay vì việc sử dụng hàm build array để tạo ra mảng, bạn có thể sử dụng chế độ Auto-indexing của dữ liệu truyền qua vòng lặp hoặc sử dụng hàm Replace Array Element cũng sẽ tối ưu hoá việc thực thi chương trình. So với một vòng lặp while thì chế độ Auto-indexing để tạo ra một mảng của vòng lặp for là ít tốn bộ nhớ hơn, tốc độ thực thi nhanh hơn vì ngay khi thực thi vòng lặp for thì chương trình biết phải giành bao nhiêu bộ nhớ cho dữ liệu mảng được tạo ra (Vì số vòng lặp được xác định). Trong khi đó vòng lặp while thì thường là chương trình phải để dư ra một vùng dự phòng cho mảng sắp được tạo khi vòng lặp While bắt đầu thực thi (Vì không biết sẽ thực thi bao nhiêu lần lặp).

Học LabVIEW, Dạy LabVIEW, Đào tạo LabVIEW, Lập trình LabVIEW,Tài liệu LabVIEW

7.      7.Tương tự, bạn hãy cẩn thận trong việc sử dụng hàm Concatenate Strings để thực hiện việc nối chuỗi. Bởi vì mỗi khi gọi hàm Concatenate Strings, ngôn ngữ lập trình LabVIEW không thể đoán được chiều dài của các chuỗi được nối là bao nhiêu để giành ra một khoảng bộ nhớ vừa đủ (Do đó thường là dự phòng dư bộ nhớ một cách không cần thiết). Nếu bạn đã ý thức được khoảng chiều dài của chuỗi cần nối với nhau khi bạn bắt tay vào việc lập trình LabVIEW, bạn có thể cân nhắc việc sử dụng hàm Replace Substring (Và một hàm String Subset để cắt bỏ những phần dư) thay vì phải dùng hàm nối chuỗi.

8.      8.Xem xét việc sử dụng phù hợp các đối tượng hiển thị dữ liệu (Indicator). Ví dụ như cần tối thiểu việc sử dụng Graphics (đặc biệt là GraphChart dù rằng đây là một ưu điểm của ngôn ngữ lập trình LabVIEW). Tai sao? Chỉ bởi vì những đối tượng này chiếm rất nhiều tài nguyên của máy nên làm giảm tốc độ thực thi code của bạn.

9.      9.Nên thực hiện việc cập nhật các ControlIndicator ở bên ngoài vòng lặp mỗi khi có thể. Điều này cảng nên thực thi triệt để đối với các ứng dụng được lập trình bằng LabVIEW mà bạn chỉ có nhu cầu xem giá trị của các indicator hay control sau khi vòng lặp đã thực thi xong.

10.10.Cuối cùng bạn cần kiểm tra việc sử dụng tài nguyên, bộ nhớ và thời gian thực thi các VI, SubVi hay toàn bộ cấu trúc code của bạn, thông qua đó bạn sẽ xác định được ở khu vực nào của code, nhiệm vụ hay công việc nào chiếm nhiều tài nguyên, bộ nhớ và thời gian nhất? Sau đó bạn có thể điều tra và xác định các biện pháp nhằm tối ưu hoá hoạt động thực thi chương trình của bạn. Để làm được điều này, bạn sử dụng công cụ Profile Performance and Memory có sẵn trong ngôn ngữ lập trình LabVIEW theo đường dẫn Tool»Profile»Performance and Memory. Bạn cũng có thể sử dụng công cụ VI Metrics để xem có bao nhiêu node, hàm và cấu trúc trong VI của bạn (Tool»Profile»VI Metrics). Ngoài ra, tính năng VI analyzer rất hữu dụng khi lập trình LabVIEW cho phép bạn phân tích tổng thể VI của bạn có được lập trình với thuật toán cũng như các yếu tố khác liên quan có tốt hay không, đã tối ưu hay chưa. Tool»VI Analyzer» Analyzer VI…