Công cụ thành viên

Công cụ trang web


programming:optimize

Khác biệt

Đây là những khác biệt giữa hai phiên bản của trang.

Liên kết đến bản xem so sánh này

Phiên bản trước của cả hai bênPhiên bản trước
Phiên bản sau
Phiên bản trước
programming:optimize [2012/03/12 02:16] hoaquynhtim99programming:optimize [2012/03/13 13:23] (hiện tại) – sửa đổi bên ngoài 127.0.0.1
Dòng 1: Dòng 1:
 +==== Tối ưu khi lập trình ====
 +
   * Nếu có thể, thay print bằng echo vì echo nhanh hơn print   * Nếu có thể, thay print bằng echo vì echo nhanh hơn print
   * Thay vì viết:   * Thay vì viết:
Dòng 12: Dòng 14:
   * Không chèn hàm vào vòng for kiểu như: <code php>for( $x=0; $x < count( $array ); $x ++ )</code>, thay vào đó nên viết là: <code php>for( $x=0, $count = count( $array ); $x < $count; ++ $x )</code>     * Không chèn hàm vào vòng for kiểu như: <code php>for( $x=0; $x < count( $array ); $x ++ )</code>, thay vào đó nên viết là: <code php>for( $x=0, $count = count( $array ); $x < $count; ++ $x )</code>  
   Vì nếu để như phương án đầu thì trong mỗi vòng quay của for, hệ thống sẽ lại thực thi hàm  count($array) thêm 1 lần nữa (trong khi đó giá trị của nó là bất biến)   Vì nếu để như phương án đầu thì trong mỗi vòng quay của for, hệ thống sẽ lại thực thi hàm  count($array) thêm 1 lần nữa (trong khi đó giá trị của nó là bất biến)
-  Tương tự, thay vì viết: + 
-  <code php>foreach ( array_keys( $new_funcs ) as $func )</code> +Tương tự, thay vì viết: 
-  Hãy viết <code php>$array_keys = array_keys( $new_funcs ); +<code php>foreach ( array_keys( $new_funcs ) as $func )</code> 
-  foreach ( $array_keys as $func )</code>+Hãy viết <code php>$array_keys = array_keys( $new_funcs ); 
 +foreach ( $array_keys as $func )</code>
   * Trong 1 hàm, không nên gọi các biến bằng global nếu như không sử dụng đến. Hay nói cách khác, càng nhiều biến được gọi qua global thì quá trình thực thi càng chậm, không quan trọng là ta có dùng đến nó hay không. Ví dụ:   * Trong 1 hàm, không nên gọi các biến bằng global nếu như không sử dụng đến. Hay nói cách khác, càng nhiều biến được gọi qua global thì quá trình thực thi càng chậm, không quan trọng là ta có dùng đến nó hay không. Ví dụ:
-  <code php>function abc() +<code php>function abc() 
-  +
-   global $a, $b, $c; + global $a, $b, $c; 
-   return $a + $b; + return $a + $b; 
-  }+}
  
 $a = 3; $a = 3;
Dòng 32: Dòng 35:
   * Hạn chế truyền dữ liệu bằng global, ví dụ: thay vì viết:   * Hạn chế truyền dữ liệu bằng global, ví dụ: thay vì viết:
  
-  <code php>function abc() +<code php>function abc() 
-  {+{
  global $a;  global $a;
  echo $a;  echo $a;
-  }+}
  
-  $a = "abc"; +$a = "abc";  
-  abc(); +abc(); 
-  </code> +</code> 
-  Nên viết: +Nên viết: 
-  <code php>function abc( $a ) +<code php>function abc( $a ) 
-  {+{
  echo $a;  echo $a;
-  +
-  $a = "abc"; +$a = "abc";  
-  abc($a); +abc($a); 
-  </code>+</code> 
 +  * Nếu có thể, thay vì viết $i ++ thì viết ++ $i (không áp dụng khi echo $i ++ hay echo ++ $i). 
 +  * Thay vì viết echo "abc $a"; nên viết echo "abc ", $a; hoặc echo "abc " . $a; 
 +  * Thay vì viết: 
 +<code php>if( strlen( $foo ) < 5 ) echo "Foo is too short";</code> 
 +nên viết: 
 +<code php>if( ! isset( $foo{4} ) ) echo "Foo is too short";</code> 
 +(nhỏ hơn 1 đơn vị, vì tính từ 0) 
 +  * count( $array ) chậm hơn sizeof( $array ), nhưng kết quả là như nhau. 
 +  * Các chuyên gia củphp.net phân tích: các comment trong file php không ảnh hưởng đến tốc độ xử lý, nhưng file càng lớn thì tốc độ càng chậm => tạo ra sự khó hiểu. Chúng ta thống nhất từ NukeViet 3.3: comment càng nhiều càng tốt. Nhưng chúng chỉ được lưu trong bản DEV.  Trong bản phát hành sẽ xóa sạch comment và nối các dòng code lại (giống như javascript). 
 +  * Trước khi viết một function mới, hãy suy nghĩ xem trong PHP có hàm tương tự hay không. Hạn chế viết hàm mới được bao nhiêu tốt bấy nhiêu (cả cho người viết code lẫn người dùng). Mặt khác, như ví dụ dưới đây thì nên viết 1 hàm phụ: 
 +Thay vì viết: 
 +<code php>echo( substr( chop( stripslashes( trim( str_replace( "\r", ' ', str_replace( "\n", ' ', $string1) ) ) ) ), 0, 1024 ) ); 
 +echo( substr( chop( stripslashes( trim( str_replace( "\r", ' ', str_replace( "\n", ' ', $string2) ) ) ) ), 0, 1024 ) );</code> 
 +Nên viết: 
 +<code php>function format( $string ) 
 +
 + echo( substr( chop( stripslashes( trim( str_replace( "\r", ' ', str_replace( "\n", ' ', $string ) ) ) ) ), 0, 1024 ) ); 
 +
 + 
 +format( $string1 ); 
 +format( $string2 );</code> 
 +  * Ngoài việc đặt tên dễ nhớ cho các biến, các hằng, các hàm..., còn phải tính đến yếu tố ngắn gọn. Tên càng ngắn gọn càng cải thiện tốc độ xử lý của php. 
 +  * Trước khi sử dụng biến nào đó, hãy chắc chắn rằng nó đã tồn tại. Để kiểm tra, hãy dùng isset. Các cảnh báo lỗi thể hiện hay không thể hiện ra bên ngoài đều ảnh hưởng đến tốc độ load. 
 +  * Dấu nháy đơn tốt hơn dấu nháy kép vì trong trường hợp sử dụng dấu nháy kép, php sẽ mất công tìm kiếm các biến bên trong nó. 
 +Ví dụ minh họa: 
 +<code php>$a = "bcbv"; 
 +echo 'abc $a'; //ket qua: abc $a 
 +echo "abc $a"; //ket qua: abc bcbv</code> 
 +  * Nên sử dụng các biến lồng nhau. 
 +Ví dụ, thay vì viết: 
 +<code php>$string = str_replace( "\n", ' ', $string ); 
 +$string = str_replace( "\r", ' ', $string ); 
 +$string = trim( $string ); 
 +$string = stripslashes( $string ); 
 +$string = chop( $string ); 
 +$string = substr( $string, 0, 1024 ); 
 +echo ( $string );</code> 
 +Nên viết: 
 +<code php>echo ( substr( chop( stripslashes( trim( str_replace( "\r", ' ', str_replace( "\n", ' ', $string ) ) ) ) ), 0, 1024 ) );</code> 
 +  * Dùng file() nhanh hơn fopen. 
 +Thay vì viết: 
 +<code php>$fp = fopen( 'database.txt', 'r' ); 
 +while( $array[] = fgets( $fp, 1024 ) ); 
 +fclose( $fp );</code> 
 + 
 +nên viết: 
 +<code php>file( 'database.txt' );</code>
programming/optimize.1331493383.txt.gz · Sửa đổi lần cuối: 2012/03/12 16:16 (sửa đổi bên ngoài)