PHP-một số mẹo để tối ưu code

Tối ưu code là điều rất quan trọng đối với tất cả lập trình viên, giúp cải thiện sản phẩm của bản thân cũng như khiến trải nghiệm của người dùng trở nên tốt hơn. Sau đây là những mẹo hay mà mình đã áp

  1. Sử dụng dấu nháy đơn thay vì dấu nháy kép.
    - Việc sử dụng dấu nháy kép giúp chúng ta có thể truyền biến có giá trị vào bên trong, điều này cũng làm giảm thời gian thực thi đoạn code đó. Nếu bạn chỉ đơn giản là lưu một chuỗi vào một biến nào đó.
  2. Sử dụng dấu nháy kép thay vì dùng hàm sprintf().
    - Trên một số diễn đàn khuyên sự dụng hàm sprintf() thay cho dấu nháy kép. Tuy nhiên theo mình thấy việc sự dùng hàm sprintf()
    php sẽ cần phân tích cú pháp chuỗi và sẽ làm nó chậm hơn so với việc sự dụng dấu ngoặc kép. Các bạn có thể tham khảo tại đây .
  3. Tại những nơi xử dụng vòng lặp nên tính toán giá trị biên trước.
    - Việc tính toán giá trị biên trước như vậy sẽ không phải tính toán nhiều lần. Ví dụ:
    $length = count($arrA);
    for( $i=0; $i< $length ; $i++) {
          //todo
    }

  4. Ưu tiên sử dụng tham chiếu hơn tham trị.
    - Khi sự dụng tham chiếu php đơn giản là tạo ra một bản sao và truyền bản sao đó đi và nó sẽ làm giảm hiệu năng. Do đó nếu có thể dùng tham chiếu trong function mà không ảnh hưởng đến logic bài toán thì bạn nên dùng điều này áp dụng trên các ngôn ngữ lập trình khác ngoài php.
    Ví dụ:
    $input = 'hello world';
    function demo (&$input){
    $input = 'hello';
    }
    demo($input);
    var_dump($input)// hello;
  5. Sử dụng === thay vì ==.
    Theo mình biết thì khi mình dùng === phạm vi so sánh sẽ được thu hẹp lại nên cũng tốc độ thực thi cũng được cải thiện hơn.
  6. Sử dụng empty() thay vì count(), strlen() khi kiểm tra 1 chuỗi, mảng có rỗng hay không.
  7. Sử dụng isset() thay vì count(), strlen() khi kiểm tra độ dài 1 chuỗi
    Để kiểm tra độ dài 1 chuỗi hay 1 mảng ta có thể dùng như sau:
    $input='abc';
    thay thế if(count($input) < 5 ) --> if(!isset($input[5]))
  8. Sử dụng ++$i thay vì $i++.
    Cơ chế hoạt động của ++$i là tính toán và gán vào giá trị ban đầu, $i++ tạo ra bản copy giá trị bản đầu, cũng giống như việc sự dụng biến tham chiếu và tham trị vậy và mình còn nhớ 1 câu nói bất hủ là:
In any case, follow the guideline “prefer ++i over i++” and you won’t go wrong

Tổng kết

  • Với sự phát triển của công nghệ, trong một số trường hợp kể trên sự chệnh lệch về timespeed và hiệu năng là không đáng kể, dù vậy thì mục tiêu ban đầu của chúng ta vẫn là hoàn thiện hơn sản phẩm của mình.
  • Trên đây là một số mẹo mà mình đã học hỏi và thu thập được từ các project mà mình làm trước đây. Mình nhận gạch đá về xây nhà ạ.