5

Đây có lẽ là một câu hỏi đau đớn cơ bản để trả lời, nhưng tôi đang tự hỏi về vấn đề hiệu suất liên quan đến sử dụng nếu giống hệt!== so nếu bằng!= để kiểm soát dòng chảy của PHP.

Hãy xem xét các chức năng PHP tầm thường như sau:

<?php 
function test_json($json = NULL) { 
    if ($json != NULL) { 
    echo 'You passed some JSON.'; 
    } else { 
    echo 'You failed to pass any JSON.'; 
    } 
} 
?> 

Từ một quan điểm hiệu suất, là nó thích hợp hơn để sử dụng nếu giống hệt (!==) để ngăn chặn PHP lặp lại thông qua các loại biến, cố gắng tìm một so sánh hợp lệ?

tôi giả rằng !==đầu tiên so sánh các loại biến, và nếu thất bại, nó ngay lập tức trả FALSE? Tôi đã sử dụng != vì PHP3 gần như là một phản xạ. Bây giờ tôi đang làm việc trên một số dự án có tính toán nhiều hơn về mặt tính toán, các cân nhắc về hiệu suất phút trở nên quan tâm hơn.

Các nhận xét khác về tối ưu hóa kiểm soát luồng đều được hoan nghênh!

+1

Khi xem xét hiệu suất trở thành mối quan tâm thực sự, hãy thử cũng lập hồ sơ. Điều đó không quan trọng so với lời gọi hàm. – mario

+0

@mario Yup. Tôi chỉ đơn giản là tò mò về toán tử so sánh khi khái niệm này xuất hiện trong khi tôi đang viết một hàm (đặt câu hỏi về thói quen của tôi.) – msanford

Trả lời

7

tôi đã không thực hiện bất kỳ bài kiểm tra hiệu suất trên lỏng lẻo vs toán tử so sánh nghiêm ngặt, nhưng đối với những gì bạn đang cố gắng để làm, tôi thay vì muốn giới thiệu cái gì đó như

if (!is_null($json)) { 
    do_stuff() 
} 

Thông tin thêm về is_null() tại http://www.php.net/manual/en/function.is-null.php

EDIT: một lưu ý trong các ý kiến ​​của trang php tôi liên kết ở trên có một số kết quả cho thấy rằng các nhà điều hành === là hơi nhanh hơn so với các nhà điều hành ==, cả hai đều nhanh hơn is_null(). Tuy nhiên, một lưu ý khác chỉ ra rằng "Sự khác biệt thời gian thực hiện giữa === NULL và is_null nhỏ hơn 250 nano giây. Hãy tối ưu hóa thứ gì đó quan trọng". Tôi phải đồng ý ở đó. Vì vậy, tất cả những gì đã nói, tôi sẽ đề nghị bạn đi với những gì bạn cho là dễ đọc nhất.

+1

+1, Chạy thử nghiệm với 1000.000 so sánh mỗi vòng lặp so sánh giá trị với 'NULL' ; '==', '===' và 'is_null()', tôi nhận được rằng '==' và '===' gần bằng '===' là * hơi * nhanh hơn và 'is_null()' lấy khoảng gấp đôi thời gian. Tuy nhiên, như là một vấn đề của sở thích cá nhân, tôi thích 'is_null()' không ít hơn, 'NULL == NULL' phải là false (* nhưng không phải là *) và' is_null() 'nắm bắt khái niệm đó. – zrvan

+0

Điểm tuyệt vời về 'NULL == NULL'. Tôi có xu hướng sai về phía các hàm có trong ngôn ngữ mà có thể vì lý do chính xác này: chúng có khả năng xử lý đúng các trường hợp góc kỳ lạ mà tôi chưa bao giờ nghĩ đến, có nghĩa là ít gỡ lỗi sau này. –

+0

Điểm tuyệt vời. Cảm ơn mọi người! – msanford

Các vấn đề liên quan