2009-03-19 35 views
12

Có sự khác biệt về tốc độ giữa hai phiên bản này không?

<?php echo $var; ?> 

<?=$var?> 

Bạn đề xuất điều gì và tại sao?

+2

Tôi thích cú pháp ngắn. Nó sạch hơn. – gradbot

+2

chỉ cần biên dịch lại php với cờ --zomg-optimization –

Trả lời

17

Sự khác biệt hiệu suất là không đáng kể. Hơn nữa, với việc sử dụng APC, hiệu suất khác biệt là zero, null, nada.

<?=$var?>yêu cầu kích hoạt thẻ ngắn. Các thẻ ngắn có vấn đề trong XML, bởi vì <? cũng là đánh dấu cho thẻ xử lý XML. Vì vậy, nếu bạn đang viết mã nên được di động, sử dụng hình thức dài.

Xem short_open_tag mô tả trong http://www.php.net/manual/en/ini.core.php

+0

Bạn nói đúng, tôi thích viết mã di động .. cảm ơn tất cả 4 câu trả lời của bạn. – grilix

+1

Tôi luôn sử dụng biểu mẫu ngắn. Nếu bao giờ tôi cần phải chạy mã mà nó không được kích hoạt hoặc khi tôi cần cho XML (không phải trong số đó đã xảy ra EVER), đó là một trường hợp đơn giản của s/ cletus

+4

@cletus: với tất cả sự tôn trọng, bạn không có ý tưởng gì cả. – vartec

4

Không, chúng giống hệt nhau. Nếu bạn thích nhập rất nhiều, hãy sử dụng <?php echo $var; ?>, nếu không bạn chỉ cần tiết kiệm thời gian với <?=$var?>.

7

Về mặt kỹ thuật, trình phân tích cú pháp phải phân tích cú pháp mọi ký tự của phiên bản dài hơn và có thêm một vài ký tự cho mỗi lần chuyển.

Nếu máy chủ web của bạn không "biên dịch trước" (ví dụ: các trang PHP được mã hóa trong bộ nhớ cache) thì có sự khác biệt về hiệu suất nhỏ. Điều này không đáng kể ngoại trừ, có lẽ, khi bạn bắt đầu nói về hàng tỷ lần chạy.

-Adam

+1

Khi bạn có hàng tỷ lần chạy, bạn sẽ không/không nên sử dụng PHP anyways. – tstenner

+0

@tstenner: Facebook không đồng ý với bạn. – TheTXI

+0

Ném đủ phần cứng vào nó ... Có những lúc thời gian của nhà phát triển có thể đắt hơn nhiều phần cứng hơn, và tái cấu trúc tất cả mã để có hiệu suất tốt hơn không phải là khôn ngoan nếu bạn chỉ đơn giản là mở rộng thông qua phần cứng. Tuy nhiên, họ sử dụng tối ưu hóa php ... –

6

Hiệu suất khôn ngoan không đáng kể.

Sử dụng thích hợp cho biết sử dụng thiết bị dài hơn vì thiết bị di động dễ dàng hơn. Cá nhân? Tôi làm cái ngắn hơn.

+0

+1 cho cùng suy nghĩ chính xác – David

5

trong php 5.3 thẻ ngắn ASP-style <%%> hỗ trợ sẽ không được dùng nữa, hãy cố gắng tránh điều này và viết lại mã cho '<?php echo' format, vì bạn không thể sử dụng <?xml ?> nội tuyến chẳng hạn.

+0

Tuy nhiên, một ý tưởng khác từ những người ở PHP ...: | –

+0

Theo như tôi biết, nó không phải là nhận được gỡ bỏ chỉ nhận được tắt theo mặc định. Có một sự khác biệt. –

+0

Mà làm cho câu trả lời nhiều hơn hoặc ít hơn FUD. Tốt đẹp. – chaos

3

Tôi nghĩ rằng điều thứ hai yêu cầu short_open_tag (trong PHP.ini) phải được đặt thành true.

Có nghĩa là cơ hội bị tắt trên một số máy chủ web.

+0

Tại sao điều này lại được bình chọn? Ông đặc biệt yêu cầu cho một so sánh hiệu suất, câu hỏi không có gì để làm với tính di động. Điều này không trả lời câu hỏi theo bất kỳ cách nào, nó thậm chí không cố gắng làm như vậy. – meagar

3

nào để bạn đề nghị

Không, trừ khi bạn thực sự muốn cho phép tiêm HTML. (99% thời gian, bạn không.)

<?php echo htmlspecialchars($var); ?> 

Hoặc xác định hàm lặp lại (htmlspecialchars ($ arg)) với tên ngắn hơn để tránh tất cả thao tác nhập đó.

+1

Tại thời điểm này, tôi có tất cả các biến sạch sẽ và an toàn :) .. Vì vậy, tôi chỉ phải in nó ra .. – grilix

+1

@bobince Đó là trường hợp nghiêm trọng của hoang tưởng ... bạn có sử dụng htmlspecialchars() trên TẤT CẢ các vars của bạn ? –

+0

@jcinacio - Nếu biến được lặp lại cho khách hàng và không được cố ý xây dựng để chứa HTML, có, bạn thực sự cần phải mã hóa nó trước tiên. Đó là một vấn đề bảo mật nghiêm trọng * rất *. –

2

Sự khác biệt về tốc độ phụ thuộc vào tốc độ bạn có thể nhập 9 ký tự phụ đó.
Nó cũng có thể cải thiện khả năng đọc mã của bạn, nhưng điều này có thể gây tranh cãi.

Nếu bạn nói về tốc độ thực thi thì không có sự khác biệt đáng chú ý.

1

Đừng cố gắng tối ưu hóa với những điều này, nó vô dụng.Thay vào đó, hãy hủy kích hoạt allow_short_tags (vì các vấn đề khi tải các tệp XML) và viết mã sạch, dễ đọc và dễ hiểu.

Ngay cả khi có thể có sự khác biệt nhỏ (chắc chắn thấp hơn 10%), đó là các biểu tượng để tối ưu hóa với nó. Nếu kịch bản của bạn chậm, hãy xem các vòng của bạn trước. Hầu hết thời gian bạn có thể giành được nhiều hiệu suất hơn bằng cách tối ưu hóa luồng chương trình hơn là sử dụng cú pháp lạ.

+0

10% là * nhiều * đơn đặt hàng có cường độ cao hơn so với hiệu suất thực tế mà bạn phải chịu khi sử dụng ' meagar

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