mình nghĩ 2 đoạn lệnh này chạy như nhau, tất nhiên nó còn phụ thuộc kiến trúc tập lệnh (ISA) của lõi vi xử lý. Tuy nhiên thì hầu hết ISA của vi xử lý có cơ chế tính toán khá giống nhau là thực hiện so sánh với 0. (cụ thể ntn thì bạn tham khảo thêm tài liệu về kiến trúc máy tính, cơ chế các tập lệnh …)
Nhưng nếu thay ở block code 2 như sau thì sẽ nhanh hơn block code 1:
// Block code 2 for (i = n; i != 0; i--) { a[i] = 0; }
Lý do là vì trong các thanh ghi của vi xử lý đã có giá trị 0 nên không cần phải copy 1 giá trị integer ở nơi khác để so sánh như block code 1 (Là giá trị n).
Tham khảo: https://www.amazon.co.uk/Professional-Embedded-ARM-Development-Wrox/dp/111878894X/280-4948868-1221714?ie=UTF8&Version=1&entries=0 ở page 180, chapter 10: Writing Optimized C