2010-01-19 34 views
17

Tôi phải chuyển mảng lớn từ máy chủ này sang máy chủ khác bằng một tệp. Đó là một mảng đa chiều nhưng khá đơn giản. Bây giờ tôi đang tìm kiếm cách hiệu quả nhất để đưa tệp này vào ứng dụng của tôi trên máy chủ thứ hai. Vì vậy, câu hỏi này là về phần file-> mảng, không phải mảng -> phần tập tin trên máy chủ đầu tiên.PHP: Mảng là var_export/include so với (un) serialize so với json_ (vi | de) mã

Tất nhiên tôi đã làm một số điểm chuẩn trên 3 lựa chọn thay thế có vẻ hứa hẹn nhất. Dữ liệu của tôi hoàn toàn chuẩn:

thời gian:

  • bao gồm: 0,338 ...
  • unserialize: 0,180 ...
  • json_decode: 0,134 ...

đỉnh sử dụng bộ nhớ:

  • bao gồm: 384374,64
  • unserialize: 201377,28
  • json_decode: 219528,08

kích thước tập tin:

  • bao gồm: 3135 kB
  • unserialize: 3142 kB
  • json_decode: 1838 kB

Tôi nghĩ rằng json_decode là con đường để đi, bởi vì sử dụng bộ nhớ cao điểm là mối quan tâm nhỏ nhất của tôi và thậm chí có json là khá tốt. Nhưng tốc độ và kích thước tập tin của json chỉ là đá. Tôi đã không bao giờ nghĩ rằng nó được nhanh như vậy.

Bất kỳ phản đối hoặc đề xuất nào khác?

+0

Bạn dường như đã tìm thấy các giải pháp cho mình. Bây giờ bạn chỉ cần làm theo (và sử dụng JSON). :) – jensgram

+3

+1 - Thật tuyệt khi bạn đã làm tất cả những việc đó trước khi đến đây và đặt câu hỏi của bạn. Hầu hết sẽ không đi đến nỗ lực này. –

+1

Chắc chắn phương pháp bao gồm phải nhanh nhất vì nó đã là mã php? Tui bỏ lỡ điều gì vậy? – aland

Trả lời

2

Kudos Jan cho 1) thực sự cố gắng ra phương pháp khác nhau 2) chia sẻ kết quả

Một số thời gian trước đây, tôi đã làm việc trên một hệ thống AI whwew knowledgebase được lưu trữ trong một mảng lớn. Tôi thấy nó là một thứ tự cường độ nhanh hơn để xây dựng lại toàn bộ mảng từ các bản ghi cơ sở dữ liệu (mysql cục bộ, khoảng 30.000 hàng) thay vì unserialize mảng từ một tệp.

(Điều này cũng có nghĩa là sau này tôi có thể sửa đổi mã để chỉ chọn lọc tải các phần có liên quan của cây kiến ​​thức để tăng tốc độ hơn nữa).

HTH

C.