thể trùng lặp:
What is the relative performance difference of if/else versus switch statement in Java?Tại sao một "if" chậm hơn "switch"?
Với hai phương pháp sau đây:
public static int useSwitch(int i) {
switch (i) {
case 0:
return 1;
default:
return 0;
}
}
public static int useIf(int i) {
if (i == 0)
return 1;
return 0;
}
thử nghiệm cho thấy switch
thực hiện nhẹ nhanh hơn (1,4 nano giây cho mỗi cuộc gọi trên máy tính của tôi) so với phiên bản if
.
Tôi đã luôn tin rằng lợi ích của một switch không đá cho đến khi ít nhất một vài ifs
có thể tránh được,
Tại sao switch
nhanh hơn so với một đơn if
?
Bạn có biết cách chúng được biên dịch không? Có lẽ bạn có thể tìm thấy câu trả lời của bạn ở đó. – user1306322
@ user1306322- Bạn sẽ phải xem xét kỹ hơn để điều tra cách JVM diễn giải hoặc biên dịch bytecode đó. Mã đầu tiên có thể sẽ sử dụng lệnh 'lookupswitch' hoặc' tableswitch', trong khi mã thứ hai sẽ sử dụng các bước nhảy bình thường. Đó là tất cả lên đến JVM để làm cho họ làm việc nhanh. – templatetypedef
Bạn có thể đăng mã điểm chuẩn của mình không? –