2013-03-05 31 views
8

Tôi cần lưu trữ nhiều mảng hai chiều bên trong cơ sở dữ liệu và không chắc chắn nên sử dụng gì: serialize hoặc implode. Vì vậy, tôi đã làm một vài xét nghiệm, để tìm ra cái nào đang làm việc nhanh hơn và đi đến kết luận đó là serialize:Serialize hoặc Implode

Execution times: 1'000'000 
Serialize: 1.4974119663239 seconds 
Implode: 2.5333571434021 seconds 
Explode: 4.0185871124268 seconds 
Unserialize: 1.6835169792175 seconds 

Vậy câu hỏi: Tại sao implode + nổ nên chậm hơn sau đó serialize + unserialize?

PS: Tôi đã tìm thấy this câu hỏi rồi, nhưng đó không phải là chính xác những gì tôi đang yêu cầu.

Trả lời

1

Ý tưởng của tôi là explode/implode hoạt động trên các chuỗi đó là lý do tại sao, trong khi serialize/unserialize đầu ra/nhập một chuỗi ở cuối/đầu. Có lẽ các chuỗi bạn implode và chuỗi dài hơn bạn explode, chậm hơn là, bạn đã thử chưa?

Để sử dụng Tôi không biết, nó phụ thuộc nếu sau này bạn muốn xử lý chuỗi đầu ra, tôi nghĩ rằng chuỗi serialize d khó phân tích cú pháp hơn. Nhưng để lưu trữ nó trong cơ sở dữ liệu hoặc tập tin tôi muốn sử dụng serialize.

+0

Điều đó nghe có vẻ hợp lý. Và vâng, mảng càng lớn, công việc nổ/nổ càng dài. Tôi cũng đã thử nghiệm điều đó. – Peon

+0

@DainisAbols Tôi có nghĩa là nó không phụ thuộc tuyến tính. Có phải 'implode'ing bốn chuỗi chính xác chậm hơn 2 lần so với việc viết hai chuỗi? Tôi đoán nó nhiều hơn; và giải mã tám chuỗi sẽ mất nhiều thời gian hơn là mã hóa hai chuỗi bốn lần (tất cả các chuỗi phải có cùng độ dài của khóa học). – Voitcus

+0

'Implode 2 phần tử: 1.8937180042267 giây', ' Implode 4 phần tử: 2.4380650520325 seconds', 'Ngụ ý 8 phần tử: 3.6058769226074 giây ' Không chính xác hai lần, nhưng gần với nó, trong khi thay đổi tuần tự với cùng loại tiến trình, nhưng tốc độ chậm hơn. – Peon