Tải háo hức là gì?


161

Tải háo hức là gì? Tôi viết mã bằng PHP / JS nhưng một câu trả lời tổng quát hơn sẽ tốt.

Tôi đã thấy rất nhiều câu hỏi liên quan đến Java và Ruby, nhưng tôi không biết bất kỳ ngôn ngữ nào trong số này và tôi cảm thấy khó đọc mã. Tôi không biết phải làm gì ở nơi đầu tiên


Câu hỏi tuyệt vời.
PA-GW

Câu trả lời:


383

Có ba cấp độ:

  1. Háo hức tải: bạn làm mọi thứ khi được yêu cầu. Ví dụ cổ điển là khi bạn nhân hai ma trận. Bạn làm tất cả các tính toán. Đó là háo hức tải;
  2. Tải lười: bạn chỉ làm một phép tính khi có yêu cầu. Trong ví dụ trước, bạn không thực hiện bất kỳ phép tính nào cho đến khi bạn truy cập vào một phần tử của ma trận kết quả; và
  3. Tải quá háo hức: đây là nơi bạn thử và dự đoán những gì người dùng sẽ yêu cầu và tải trước nó.

Tôi hy vọng điều đó có ý nghĩa trong bối cảnh bạn đang nhìn thấy nó.

Hãy để tôi cho bạn một ví dụ "Webby".

Hãy tưởng tượng một trang với hình ảnh cuộn qua như cho các mục menu hoặc điều hướng. Có ba cách tải hình ảnh có thể hoạt động trên trang này:

  1. Tải mỗi hình ảnh duy nhất cần thiết trước khi bạn kết xuất trang ( háo hức );
  2. Chỉ tải các hình ảnh được hiển thị khi tải trang và tải các hình ảnh khác nếu / khi chúng được yêu cầu ( lười biếng ); và
  3. Chỉ tải hình ảnh hiển thị khi tải trang. Sau khi trang đã tải trước, hãy tải trước các hình ảnh khác trong nền trong trường hợp bạn cần chúng ( quá háo hức ).

Có lý?


3
Mặc dù bạn đã quá nhiệt tình bằng cách vượt ra ngoài câu hỏi cụ thể; đây vẫn là một câu trả lời tuyệt vời Nó ngắn, đơn giản và đưa ra một ví dụ.
Phil

23

Nó ngược lại với tải lười biếng , làm trì hoãn việc khởi tạo một đối tượng cho đến khi đối tượng là cần thiết. Tải háo hức khởi tạo một đối tượng khi tạo.


1
Tôi có thể thêm rằng các thuật ngữ này thường được sử dụng (và có thể đến từ đâu?) Trong ngữ cảnh của ORM (Object Relative Mapper), trong đó bạn ánh xạ một đối tượng vào một bảng trong cơ sở dữ liệu quan hệ.
Loki

10

Nếu bạn tưởng tượng bạn có đối tượng được gọi là người có tên, ngày sinh và số lượng chi tiết ít quan trọng hơn, hãy nói màu sắc yêu thích, chương trình truyền hình yêu thích.

Để lười tải lớp này, bạn sẽ kích hoạt nó đọc có lẽ từ cơ sở dữ liệu tất cả các chi tiết cốt lõi được sử dụng thường xuyên hơn (nói tên và ngày sinh) và chỉ đọc trong các chi tiết ít được sử dụng khi / nếu cần, tải háo hức thì ngược lại , tức là bạn tải tất cả các chi tiết cùng một lúc.

Lợi ích của việc tải lười biếng thường được coi là hiệu quả, tuy nhiên nếu các đối tượng không phức tạp hoặc hiệu quả thì không phải là vấn đề háo hức có thể được sử dụng


7
Khi bạn nghĩ về nó, tải lười biếng là về bộ nhớ ít hơn và tính toán nhiều hơn ở mỗi lệnh gọi hàm, trong khi tải háo hức sẽ sử dụng nhiều bộ nhớ hơn và tính toán nhiều hơn khi lớp được tạo và tính toán ít hơn khi hàm được gọi.
Loki

0

Tải háo hức cũng được sử dụng trong góc 8. Nó chỉ có nghĩa rằng ngay lập tức ứng dụng được nạp bên trong trình duyệt chúng tôi tự động, ngay lập tức có được tất cả các mã bên trong một module cụ thể, ví dụ, nói rằng bạn vừa tạo ra một mô-đun Auth với một | Đăng nhậpđăng ký thành phần của nó được nhập vào Mô-đun ứng dụng .

Ngược lại, có tải lười biếng , đó là khi chúng ta nói với Mô-đun ứng dụngMô-đun Auth được tải vào, để chỉ tải Mô-đun Auth tại một thời điểm nhất định, chẳng hạn như khi người dùng đi đến một tuyến đường nhất định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.