Đối tượng php so với mảng kết hợp
một nhà xây dựng là gì? Show Đó là kết quả của điểm chuẩn tính bằng giây Loại. [-] crodas (25)Tôi luôn bắt đầu với các mảng để tạo mẫu nhanh, sau đó tôi quay lại các đối tượng để lưu trữ cùng một dữ liệu. Không chỉ vì tôi nghi ngờ nó sẽ nhanh hơn (vì định nghĩa lớp) mà còn vì dữ liệu tôi đang chia sẻ có các phương thức riêng biết cách xử lý dữ liệu đó. Đây là một ví dụ mà tôi đã chuyển các cấu trúc mảng vào lớp riêng của chúng, mã đẹp hơn nhiều và nó chạy nhanh hơn một chút nếu bạn đo vài triệu lần Bài viết thú vị xác nhận lý thuyết của tôi. D, cảm ơn vì đã viết nó $0. 00 [-] crell (53)Tốt đẹp. Vâng, khả năng đóng gói hành vi là một trong những lợi ích rõ ràng nhất của một lớp nhưng có một niềm tin chung về PHP trong nhiều năm rằng làm như vậy sẽ tốn kém hơn so với làm "thủ công". Điều đó có thể đúng một lần, nhưng nó chắc chắn không đúng ngày hôm nay. Trong thực tế, hoàn toàn ngược lại $0. 00 [-] crell (53)Một phụ lục, như một vài người đã chỉ ra cho tôi trên Twitter Điều này áp dụng cho hành vi thời gian chạy. PHP có một cách tối ưu hóa khác, nếu bạn xác định một mảng là 4 thì nó sẽ được đặt trong bộ nhớ dùng chung với mã, do đó, chi phí bộ nhớ thực cho mỗi quá trình sử dụng mảng đó là 0Điều đó thực sự chỉ áp dụng nếu
Trong trường hợp đó, một mảng lồng nhau lớn 4 thực sự có thể tốt hơn cho cả CPU và bộ nhớTuy nhiên, trình tạo thời gian chạy cho mã đã biên dịch đó vẫn tốt hơn khi sử dụng các đối tượng để đạt hiệu quả bộ nhớ để bạn có thể tạo mã đã biên dịch đó Như mọi khi, bối cảnh quan trọng. . -) $0. 00 [-] lukestokes (75)Viết hay quá, Larry. tôi sẽ không chiến đấu với bạn. Bạn đã lập luận tốt $0. 00 [-] crell (53)ồ tốt. Chúng ta có đủ thứ để đấu tranh. Tôi ghét phải thêm tối ưu hóa lập trình vào danh sách. . -) $0. 00 [-] shulard (25)Điểm chuẩn đẹp Và còn việc mở rộng 6 trên lớp đã đặt tên để vẫn lưu trữ nó dưới dạng một mảng kết hợp thì sao?Nó có phải là sự kết hợp đôi bên cùng có lợi nhất không? $0. 00 [-] crell (53)Tôi đoán là nó sẽ chậm hơn vì nó phải gọi tuần tự hóa/giải tuần tự hóa trong không gian người dùng cho mỗi lớp. Nó có thể sẽ nhỏ hơn nhưng chi phí hiệu suất có thể không đáng. Điều đó nói rằng, tôi đã không thử $0. 00 [-] brooksie155 (25)Làm thế nào về việc sử dụng array_multisort() thay vì usort() 0Chạy trên mac book pro, 2. Intel Core i7 2GHz, 16GB, liệt kê Av. của 3 lần chạy Mảng kết hợp (Sắp xếp) MethodRuntime(s)Memory (byte)usort15. 6589 (s)541414232 byte (516. 33 MB)array_mulitsort8. 8314 (s)706785816 byte (674. 04MB)Đối tượng có thuộc tính công khai (sắp xếp) MethodRuntime(s)Memory (byte)usort12. 9263 (s)253795352 byte (242. 04 MB)array_mulitsort7. 6217 (s)419166808 byte (399. 75MB)sự đánh đổi giữa bộ nhớ và thời gian chạy $0. 00 [-] crell (53)quan sát thú vị. Nếu bạn đang sắp xếp một mảng, vâng, điều đó sẽ tạo ra sự khác biệt lớn. Tuy nhiên, mục đích của 7 ở đây là cung cấp sự so sánh trực tiếp giữa các đối tượng và mảng, vì vậy chúng phải được sử dụng theo cùng một cách. Điều đó có nghĩa là 7 để chúng tôi có thể so sánh quyền truy cập tài sản trong mỗi. Tôi không quan tâm nhiều đến bản thân việc sắp xếp vì việc sắp xếp là một cách dễ dàng để gọi 9 và 0 hàng triệu lần. . -)$0. 00 [-] crell (53) (đã chỉnh sửa)Cái này cũ hơn, nhưng đây là bài đăng của Nikita Popov giải thích sự khác biệt về lưu trữ trong PHP 5. 4. https. //ý chính. github. com/nikic/5015323 Các cấu trúc đã thay đổi đáng kể trong PHP 7, nhưng sự tối ưu hóa cơ bản mà anh ấy mô tả vẫn còn với chúng tôi và là lý do cho những kết quả này Một số bài viết gần đây về chủ đề này, quá https. //nikic. github. io/2011/12/12/Làm-lớn-là-PHP-mảng-thực-Hint-BIG. html $0. 00 [-] jorgecastro (25) (đã chỉnh sửa)Chào bạn Tôi thực sự đã cố gắng sử dụng các lớp mô hình nhưng nó không thực tế Giả sử chúng ta muốn json_serialize. Ok, nó không phải là một vấn đề. Nhưng điều gì sẽ xảy ra nếu chúng ta có một trường được tạo bởi một mô hình khác 5Nối tiếp nó không vui. Tuy nhiên, khử tuần tự hóa (json) là một thách thức lớn vì hệ thống không hiểu trường $typeCustomer nếu một đối tượng và nó khử tuần tự hóa thành stdClass, thì mọi phương thức được đính kèm với TypeCustomer đều thất bại https. // nhà phát triển. đến/jorgecc/php-là-xấu-cho-lập-trình-hướng-đối-tượng-oop-282a $0. 00 [-] a-0-1 (-4)(1)upvote cho tôi xin vui lòng? . //steemit. com/tin tức/@kinh thánh. com/6h36cq $0. 00 [-] waldi8 (35)bài viết rất hay. Tôi thường gặp những vấn đề này với mảng kết hợp khi viết mã cho các trang web như https. //www. nhận được. đồng Sự khác biệt giữa mảng kết hợp và đối tượng trong PHP là gì?Một đối tượng là một thể hiện của một lớp. Nó chỉ đơn giản là một mẫu vật của một lớp và được cấp phát bộ nhớ. Mảng là cấu trúc dữ liệu lưu trữ một hoặc nhiều loại giá trị tương tự trong một tên nhưng mảng kết hợp khác với một mảng PHP đơn giản . Một mảng chứa chỉ số chuỗi được gọi là mảng kết hợp.
Sự khác biệt giữa mảng và đối tượng trong PHP là gì?Sự khác biệt cơ bản giữa mảng PHP và đối tượng là chúng ta không thể thay đổi quy tắc của mảng . PHP ngôn ngữ xác định những gì chúng ta có thể và không thể làm với một mảng và không có cách nào để chương trình PHP của bạn thay đổi điều đó. Mặt khác, các đối tượng có các quy tắc được xác định bởi chương trình PHP mà chúng đang chạy trong đó.
Là một đối tượng một mảng kết hợp?Khi xử lý các đối tượng JavaScript dưới dạng mảng, Chuỗi được sử dụng làm chỉ mục để liên kết từng giá trị thuộc tính với tên đối tượng. Mảng loại này được gọi là "mảng kết hợp" .
Mảng hoặc đối tượng nào nhanh hơn trong PHP?Sự khác biệt giữa mảng số và mảng kết hợp chỉ là 5%, vì vậy bạn có thể nói rằng chúng giống nhau. Việc sử dụng đối tượng chậm hơn +100% nhưng vẫn có thể chấp nhận được trong hầu hết các điều kiện (hay còn gọi là sử dụng gấp đôi thời gian). Việc gọi một phương thức hoặc việc sử dụng một hàm tạo sẽ làm tăng đáng kể giá trị. |