Để đến câu trả lời, bạn sẽ cần phải thiết lập giàn kiểm tra điểm chuẩn. So sánh tất cả các phương thức trên một vài trăm nghìn hoặc hàng triệu lần lặp lại trên một hộp không hoạt động. Hãy thử chức năng microtime tích hợp để đo sự khác biệt giữa bắt đầu và kết thúc. Đó là thời gian trôi qua của bạn.
Bài kiểm tra sẽ đưa bạn tất cả 2 phút để viết.
Để giúp bạn tiết kiệm một số nỗ lực, tôi đã viết một bài kiểm tra. Thử nghiệm của riêng tôi cho thấy rằng các giải pháp chức năng (chất nền) là MUCH chậm hơn (dự kiến). Giải pháp PHP ({}) thành ngữ nhanh như phương pháp chỉ mục. Họ có thể hoán đổi cho nhau. Các [[]) được ưa thích, vì đây là hướng mà PHP sẽ liên quan đến việc bù đắp chuỗi.
<?php
$string = 'abcd';
$limit = 1000000;
$r = array(); // results
// PHP idiomatic string index method
$s = microtime(true);
for ($i = 0; $i < $limit; ++$i) {
$c = $string{2};
}
$r[] = microtime(true) - $s;
echo "\n";
// PHP functional solution
$s = microtime(true);
for ($i = 0; $i < $limit; ++$i) {
$c = substr($string, 2, 1);
}
$r[] = microtime(true) - $s;
echo "\n";
// index method
$s = microtime(true);
for ($i = 0; $i < $limit; ++$i) {
$c = $string[2];
}
$r[] = microtime(true) - $s;
echo "\n";
// RESULTS
foreach ($r as $i => $v) {
echo "RESULT ($i): $v \n";
}
?>
Kết quả:
KẾT QUẢ (PHP4 & 5 niềng răng thành ngữ cú pháp): ,19106006622314
KẾT QUẢ (chuỗi lát chức năng): ,50699090957642
KẾT QUẢ (* cú pháp chỉ số, tương lai là niềng răng không được dùng nữa *): 0.19102001190186
'$ string [2]' hoặc '$ string {2}' phải giống nhau về tốc độ và mức tiêu thụ bộ nhớ và e ither của họ nên được nhanh hơn so với chất nền. – anubhava