01/10/2018, 15:01
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 độ?
Bài liên quan
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ả (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
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ủa1 <= 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.
Code này không phải C if then là không phải rồi.
Code này lai căng quá, Python cũng không có then.
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 . 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.