PHP là một thông dịch viên, vì vậy, để có một buổi biểu diễn tốt cho tốt mã, nó phải hạn chế chính nó để không làm "hợp lệ" opimizations phức tạp (như trình biên dịch có thể làm, bởi vì họ có thời gian cho điều đó).
Kể từ thời điểm tập hợp, tốt hơn là có =+
so với số tiền tương đương của nó, chỉ vì nó sử dụng ít tài nguyên hơn.
Trong trường hợp của PHP, nó tokenizes =+
đến T_PLUS_EQUAL
, cũng được thực thi tốt nhất bởi PHP thực thi, và mặt khác, tổng, tốt, nó được tokenized (và thực hiện) giống như một tổng.
Tiếp nối "bãi" từ cả hai token_get_all()
<?php echo '<pre>';
print_r(array_map(function($t){if(is_array($t)) $t[0]=token_name($t[0]); return $t;},
token_get_all('<?php $a=$a+3 ?>')));
print_r(array_map(function($t){if(is_array($t)) $t[0]=token_name($t[0]); return $t;},
token_get_all('<?php $a+=3 ?>')));
// results in:
?>
Array
(
[0] => Array
(
[0] => T_OPEN_TAG
[1] => 1
)
[1] => Array
(
[0] => T_VARIABLE
[1] => $a
[2] => 1
)
[2] => =
[3] => Array
(
[0] => T_VARIABLE
[1] => $a
[2] => 1
)
[4] => +
[5] => Array
(
[0] => T_LNUMBER
[1] => 3
[2] => 1
)
[6] => Array
(
[0] => T_WHITESPACE
[1] =>
[2] => 1
)
[7] => Array
(
[0] => T_CLOSE_TAG
[1] => ?>
[2] => 1
)
)
Array
(
[0] => Array
(
[0] => T_OPEN_TAG
[1] => 1
)
[1] => Array
(
[0] => T_VARIABLE
[1] => $a
[2] => 1
)
[2] => Array
(
[0] => T_PLUS_EQUAL /// <= see here!!!!!
[1] => +=
[2] => 1
)
[3] => Array
(
[0] => T_LNUMBER
[1] => 3
[2] => 1
)
[4] => Array
(
[0] => T_WHITESPACE
[1] =>
[2] => 1
)
[5] => Array
(
[0] => T_CLOSE_TAG
[1] => ?>
[2] => 1
)
)
Nguồn
2013-07-05 17:21:37
nếu không có gì khác, nó hơi ít mã để phân tích. –
Làm thế nào để bạn có thời gian? Nó sẽ là thú vị để biết ... – CodeAngry
đoán của tôi là bạn có thể tăng $ a thay vì thay đổi $ a thành một biến mới chỉ là 3 chữ số lớn hơn – exussum