Phép so sánh như nào thì tốt hơn?

Bài toán: Kiểm tra một số có nằm trong một khoảng hay không? Ví dụ khoảng là [1,100]

Có 2 cách để so sánh ở đây

  • Cách 1: so sánh ngoài khoảng dùng or
if (a<1) or (a>100) then return False
  • Cách 2 so sánh trong khoảng dùng and
if 1 <= a <= 100 then return True

Vậy cách nào tốt hơn về mặt tốc độ?

Mình thấy nó như nhau.

Mình dùng trang này: https://godbolt.org/ , kết hợp với trang này https://defuse.ca/online-x86-assembler.htm, code thử thì số byte phải tốn trong trường hợp xấu nhất (ví dụ lệnh jmp chuẩn là 5 byte, không sử dụng các variant đặc biệt ít tổn byte hơn) thì đều tốn 24 byte cả :smiley: (trường hợp kiến trúc CPU x86) , giờ muốn biết nhanh hay chậm hơn thì chắc phải mổ xẻ các dòng CPU :joy:

1 Like

Trong Python bạn viết 1 <= a <= 100 thì máy sẽ hiểu là so sánh a trong khoảng [1, 100], còn trong C/C++ thì máy sẽ hiểu là bạn lấy kết quả của 1 <= a đem so sánh với 100 đấy.

À mà cách nào thuận theo suy nghĩ của bạn hơn thì viết. Mình nghĩ 2 dòng như nhau.

2 Likes

Code này không phải C :smiley: if then là không phải rồi.

1 Like

Code này lai căng quá, Python cũng không có then.

1 Like

Visual Basic à ? Nhưng cũng chưa ai thấy viết so sánh thế bao giờ.

Tùy architecture và sức optimize của compiler trâu bò tới cỡ nào :joy:. Hỏi mấy câu chung chung như thế này mà không đưa ra ngữ cảnh cụ thể thì khó so sánh lắm.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?