Tạo tiled dựa trên nền Pull và Push

Một phần của tài liệu NGHIÊN CỨU XÂY DỰNG THỬ NGHIỆM GIẢI PHÁP LƢU TRỮ BẢN ĐỒ TRỰC TUYẾN DẠNG TILED (Trang 35)

Có hai phƣơng pháp để tạo ra tiled từ hình ảnh nguồn ngẫu nhiên: nền kéo (Pull)

nền đ y (Push).

Tạo ra tiled kéo lặp trên tiled mong muốn và kéo hình ảnh dữ liệu từ các hình ảnh nguồn. Nền đẩy tiled tạo ra lặp đi lặp lại trên nguồn hình ảnh và đẩy dữ liệu hình ảnh từ họ những hình ảnh lát tiled. Có sự khác biệt nhỏ giữa hai phƣơng pháp tiếp cận. Dƣới đây là ví dụ về mã giả cho thấy mà chỉ có những đặt hàng của những thay đổi cấu trúc lặp đi lặp lại giữa hai phƣơng pháp.

Một mối quan tâm thứ hai là đa luồng. Máy tính hiện đại có nhiều lõi xử lý và có thể thực hiện nhiều luồng cùng một lúc. Một hệ thống thực tế phải sử dụng nhiều luồng để có hiệu quả, nhƣng nó cũng phải cẩn thận quản lý tài nguyên hình ảnh trong một luồng an toàn. Hai luồng nên có lẽ không hoạt động trên cùng một ảnh tiled vào cùng một lúc. Đối với hệ thống nguyên mẫu sáng tạo của chúng ta đầu tiên tiled, chúng ta sẽ sử dụng một phƣơng pháp kéo. Nhiều tiled sẽ chứa các dữ liệu từ nhiều hình ảnh nguồn. Nếu chúng ta lặp qua nguồn hình ảnh đầu tiên, nhƣ trong một phƣơng pháp đẩy, sau đó sẽ trao đổi hình ảnh lát tiled vào và ra khỏi bộ nhớ thƣờng xuyên. Vì vậy, những tiled sẽ phải đƣợc trao đổi giữa bộ nhớ và thời gian nhiều ổ đĩa trong quá trình tạo ra chúng. Điều này đặt ra một số vấn đề khi nói đến lƣu trữ tiled, nhƣ nhiều ngƣời viết các tập tin nhỏ hoặc các khối dữ liệu có xu hƣớng gây ra sự phân mảnh của một hệ thống tập tin hoặc các trang cơ sở dữ liệu. Trong chƣơng tiếp theo chúng ta sẽ tìm hiểu chi tiết hơn lý do tại sao điều quan trọng là để viết một tiled hình ảnh một lần và chỉ một lần.

Không giống nhƣ hình ảnh lát tiled, hình ảnh nguồn của chúng ta sẽ đƣợc sử dụng trong một thời trang chỉ đọc. Chúng ta có thể trao đổi chúng một cách an toàn và bộ nhớ nhiều lần mà không cần phải thực hiện bất kỳ viết. Điều này dẫn chúng ta sử dụng một phƣơng pháp kéo. chúng ta sẽ lặp qua các tiled đầu tiên và trao đổi các hình ảnh nguồn lớn trong và ngoài bộ nhớ. Kết quả này có thể có vẻ phản trực giác. Thông thƣờng hình ảnh nguồn của chúng ta lớn hơn nhiều so với hình ảnh lát tiled của chúng ta.

Nguồn hình ảnh thƣờng khoảng từ 1.000x1.000 đến 10.000x10.000. Tiled của chúng ta hình ảnh hoặc 256x256 hoặc 512 x512. Các hình ảnh nguồn lớn sẽ mất một đáng kể số lƣợng thời gian để đọc và đọc lại từ đĩa. Để giảm thiểu kết quả này, chúng ta sẽ sử dụng một bộ nhớ cache bộ nhớ của hình ảnh nguồn. Chúng ta sẽ xây dựng một bộ nhớ đệm

26

(LRU) mới sử dụng nhất của hình ảnh nguồn giải mã trong bộ nhớ. LRU lƣu trữ có kích thƣớc cố định. Nếu một phần tử đƣợc thêm vào một bộ nhớ cache đã đầy đủ, LRU bộ nhớ cache sẽ loại bỏ các yếu tố đƣợc sử dụng ít nhất gần đây. Mỗi lần chúng ta truy cập vào một nguồn hình ảnh, chúng ta sẽ kiểm tra nếu nó đang trong bộ nhớ cache bộ nhớ. Nếu có, sau đó không phải đọc và giải mã hình ảnh. Nếu hình ảnh không có trong bộ nhớ cache bộ nhớ, chúng ta sẽ đọc và giải mã hình ảnh và đặt nó trong bộ nhớ cache.

Các bộ nhớ cache LRU hoạt động rất tốt trong trƣờng hợp này. Chúng ta sẽ lặp qua các tiled trong địa lý trật tự. Hình ảnh nguồn ảnh hƣởng đến nhóm của các tiled là biên giới lẫn nhau về mặt địa lý. Chúng ta có thể mong đợi để có một tỷ lệ cao của "hit" trên hình ảnh bộ nhớ cache của chúng ta. Tiled đầu tiên là các yêu cầu dữ liệu từ một nguồn hình ảnh sẽ gây ra nó để đƣợc nạp bộ nhớ cache. Tiled ngay lập tức sau khi Tiled đầu tiên sẽ có thể cũng sử dụng dữ liệu từ hình ảnh nguồn đƣợc đặt trong bộ nhớ cache. Bộ nhớ cache hit cao tỷ lệ này cung cấp một thuật toán hiệu quả hơn.

Một phần của tài liệu NGHIÊN CỨU XÂY DỰNG THỬ NGHIỆM GIẢI PHÁP LƢU TRỮ BẢN ĐỒ TRỰC TUYẾN DẠNG TILED (Trang 35)

Tải bản đầy đủ (PDF)

(58 trang)