Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập

Mục lục:

Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập
Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập

Video: Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập

Video: Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập
Video: Code C/C++ khi đi làm thực tế có đáng sợ như lời đồn? 2024, Tháng mười một
Anonim

Sự khác biệt chính - Máy phụ thuộc vào Máy và Tối ưu hóa mã độc lập với máy

Chương trình máy tính là tập hợp các hướng dẫn được cung cấp cho phần cứng, để thực hiện các tác vụ. Các chương trình này hầu hết được viết bằng ngôn ngữ cấp cao và máy tính không hiểu ngôn ngữ đó. Do đó, một trình biên dịch được sử dụng để chuyển đổi các lệnh đó thành mã máy hoặc mã đích. Nó trải qua một số giai đoạn để xây dựng mã mục tiêu. Tối ưu hóa mã là một trong số đó. Có hai kỹ thuật tối ưu hóa như, tối ưu hóa mã phụ thuộc vào máy và tối ưu hóa mã độc lập với máy. Sự khác biệt chính giữa tối ưu hóa mã phụ thuộc vào máy và tối ưu hóa mã độc lập với máy là tối ưu hóa phụ thuộc vào máy được áp dụng cho mã đối tượng trong khi tối ưu hóa mã độc lập với máy được áp dụng cho mã trung gian.

Tối ưu hóa mã phụ thuộc vào máy là gì?

Khi chuyển đổi mã nguồn sang mã đối tượng hoặc mã đích, trình biên dịch sẽ trải qua một số giai đoạn. Đầu tiên, mã nguồn được cấp cho máy phân tích Lexical, nơi tạo ra các mã thông báo. Sau đó, đầu ra được đưa cho trình phân tích cú pháp để điều tra xem các mã thông báo được tạo có theo thứ tự logic hay không. Đầu ra đó được cung cấp cho bộ phân tích ngữ nghĩa. Giả sử rằng có một đoạn mã là p=q + r;

Ở đây, p, q là số nguyên, nhưng r là số thực. Sử dụng trình phân tích ngữ nghĩa, biến số nguyên c được chuyển đổi thành số thực. Do đó, nó thực hiện phân tích ngữ nghĩa. Đầu ra của bộ phân tích ngữ nghĩa chuyển đến bộ tạo mã Trung gian. Nó trả về một mã trung gian sau đó chuyển đến trình tối ưu hóa mã. Tối ưu hóa mã là quá trình loại bỏ các câu lệnh không thiết yếu của chương trình mà không làm thay đổi ý nghĩa của mã nguồn thực tế. Nó không phải là tối ưu hóa bắt buộc nhưng nó có thể cải thiện thời gian chạy của mã đích. Đầu ra của trình tối ưu hóa mã được cung cấp cho trình tạo mã và cuối cùng, mã đích được tạo.

Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập
Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập
Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập
Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập

Hình 01: Các giai đoạn của Trình biên dịch

Trong tối ưu hóa mã phụ thuộc vào máy, tối ưu hóa được áp dụng cho mã nguồn. Việc phân bổ đủ số lượng tài nguyên có thể cải thiện việc thực thi chương trình theo cách tối ưu hóa này.

Tối ưu hóa mã độc lập với máy là gì?

Khi tối ưu hóa được thực hiện trên mã trung gian, nó được gọi là tối ưu hóa mã độc lập với máy. Có các kỹ thuật khác nhau để đạt được tối ưu hóa mã độc lập với máy. Chúng được mô tả bằng các ví dụ sau.

Đọc những dòng mã dưới đây.

cho (j=0; j<10; j ++) {

b=x + 2;

a [j]=5j;

}

Theo đoạn mã trên, b=x + 2 được tính toán lặp đi lặp lại trong mỗi lần lặp. Khi b được tính, nó không thay đổi. Vì vậy, dòng này có thể được đặt bên ngoài vòng lặp như sau.

b=x + 2;

cho (j=0; j< 10; j ++)

{a [j]=5j;

}

Đây được gọi là chuyển động mã.

Đọc những dòng mã dưới đây.

j=5;

nếu (j==10) {

a=b + 20;

}

Theo đoạn mã trên, ‘if block’ sẽ không bao giờ thực thi vì giá trị j sẽ không bao giờ bằng 10. Nó đã được khởi tạo thành giá trị 5. Do đó, khối if này có thể bị loại bỏ. Kỹ thuật này là loại bỏ mã chết.

Một phương pháp khác là giảm sức mạnh. Các phép toán số học như phép nhân đòi hỏi nhiều bộ nhớ, thời gian và chu kỳ CPU hơn. Các biểu thức đắt tiền này có thể được thay thế bằng các biểu thức rẻ tiền như b=a2; hoặc có thể được thay thế bằng phép cộng, b=a + a;

Tham khảo mã bên dưới.

cho (j=1; j <=5; j ++) {

value=j5;

}

Thay vì phép nhân, mã có thể được thay đổi như sau.

int temp=5;

cho (j=1; j<=5; j ++) {

temp=temp + 5;

value=temp;

}

Có thể đánh giá các biểu thức là hằng số trong thời gian chạy. Nó được gọi là gấp liên tục. Có thể phát biểu như b [j + 1]=c [j + 1];

Thay vào đó, nó có thể được thay đổi như sau.

n=j +1;

b [n]=c [n];

Có thể có các vòng lặp như sau.

cho (j=0; j<5; j ++) {

printf (“a / n”);

}

cho (j=0; j <5; j ++) {

printf (“b / n”);

}

In a và b, cả hai đều có cùng số lần lặp. Cả hai có thể được kết hợp thành một vòng lặp for như sau.

cho (j=0; j <5; j ++) {

printf (“a / n”);

printf (“b / n”);

}

Một kỹ thuật quan trọng khác là loại bỏ biểu thức con chung. Nó là thay thế các biểu thức giống hệt nhau bằng một biến duy nhất để thực hiện phép tính. Tham khảo mã bên dưới.

a=bc + k;

d=bc + m;

Mã này có thể được chuyển đổi như sau.

temp=bc;

a=temp + k;

d=temp + m;

Không bắt buộc phải tính bc lặp đi lặp lại. Giá trị nhân có thể được lưu trữ trong một biến và được sử dụng lại.

Điểm giống nhau giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập là gì?

Cả hai đều thuộc về Tối ưu hóa mã

Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập là gì?

Máy phụ thuộc vào máy so với Tối ưu hóa mã độc lập với máy

Tối ưu hóa mã phụ thuộc vào máy được áp dụng cho mã đối tượng. Tối ưu hóa mã độc lập với máy được áp dụng cho mã trung gian.
Sự tham gia với Phần cứng
Tối ưu hóa phụ thuộc vào máy liên quan đến thanh ghi CPU và tham chiếu bộ nhớ tuyệt đối. Tối ưu hóa mã độc lập với máy không liên quan đến thanh ghi CPU hoặc tham chiếu bộ nhớ tuyệt đối.

Tóm tắt - Máy phụ thuộc vào máy so với Tối ưu hóa mã độc lập với máy

Tối ưu hóa mã bao gồm hai kỹ thuật tối ưu hóa cụ thể là, tối ưu hóa mã phụ thuộc vào máy và tối ưu hóa mã độc lập với máy. Sự khác biệt giữa tối ưu hóa mã phụ thuộc vào máy và tối ưu hóa mã độc lập với máy là tối ưu hóa phụ thuộc vào máy được áp dụng cho mã đối tượng trong khi tối ưu hóa mã độc lập với máy được áp dụng cho mã trung gian.

Tải xuống phiên bản PDF của Tối ưu hóa mã phụ thuộc vào máy và độc lập với máy

Bạn có thể tải xuống phiên bản PDF của bài viết này và sử dụng nó cho mục đích ngoại tuyến theo ghi chú trích dẫn. Vui lòng tải xuống phiên bản PDF tại đây Sự khác biệt giữa Tối ưu hóa mã phụ thuộc vào máy và máy độc lập

Đề xuất: