Vì vậy, tôi đã tò mò về hiệu suất của một số phương pháp được đề cập trong câu trả lời cho số lượng lớn số nguyên.
Sự chuẩn bị
Chỉ cần tạo một mảng gồm 1 triệu số nguyên ngẫu nhiên trong khoảng từ 0 đến 100. Hơn, tôi đã mã hóa chúng để lấy chuỗi.
$integers = array();
for ($i = 0; $i < 1000000; $i++) {
$integers[] = rand(0, 100);
}
$long_string = implode(',', $integers);
Phương pháp 1
Đây là một trong những câu trả lời từ câu trả lời của Mark:
$integerIDs = array_map('intval', explode(',', $long_string));
Phương pháp 2
Đây là cách tiếp cận JSON:
$integerIDs = json_decode('[' . $long_string . ']', true);
Phương pháp 3
Tôi đã đưa ra điều này như là sửa đổi câu trả lời của Mark. Đây vẫn là sử dụng explode()
chức năng, nhưng thay vì gọi array_map()
tôi đang sử dụng foreach
vòng lặp thông thường để thực hiện công việc để tránh chi phí array_map()
có thể có. Tôi cũng đang phân tích cú pháp với (int)
vs intval()
, nhưng tôi đã thử cả hai và không có nhiều khác biệt về hiệu suất.
$result_array = array();
$strings_array = explode(',', $long_string);
foreach ($strings_array as $each_number) {
$result_array[] = (int) $each_number;
}
Các kết quả:
Method 1 Method 2 Method 3
0.4804770947 0.3608930111 0.3387751579
0.4748001099 0.363986969 0.3762528896
0.4625790119 0.3645150661 0.3335959911
0.5065748692 0.3570590019 0.3365750313
0.4803431034 0.4135499001 0.3330330849
0.4510772228 0.4421861172 0.341176033
0.503674984 0.3612480164 0.3561749458
0.5598649979 0.352314949 0.3766179085
0.4573421478 0.3527538776 0.3473439217
0.4863037268 0.3742785454 0.3488383293
Điểm mấu chốt là trung bình. Có vẻ như phương pháp đầu tiên chậm hơn một chút đối với 1 triệu số nguyên, nhưng tôi không nhận thấy hiệu suất tăng gấp 3 lần của Phương pháp 2 như đã nêu trong câu trả lời. Hóa ra foreach
vòng lặp là vòng lặp nhanh nhất trong trường hợp của tôi. Tôi đã thực hiện đo điểm chuẩn với Xdebug.
Chỉnh sửa: Đã được một lúc kể từ khi câu trả lời ban đầu được đăng. Để làm rõ, điểm chuẩn đã được thực hiện trong php 5.6.