2012-05-03 20 views
5

Giả sử tôi đang cố tổng hợp một biến (gọi nó là var_1) trong một tập dữ liệu rất lớn (gần một terabyte). Tập dữ liệu vừa dài vừa rộng. Mã của tôi sẽ trông như thế này:Việc sử dụng tùy chọn KEEP trên bộ dữ liệu SAS có cải thiện hiệu năng đọc không?

PROC MEANS DATA=my_big_dataset SUM; 
    VAR var_1; 
RUN; 

Tôi có nhận được bất kỳ đạt được hiệu suất ở tất cả bằng công KEEP tùy chọn trên bộ dữ liệu được đọc? Đó là:

PROC MEANS DATA=my_big_dataset (KEEP=var_1) SUM; 
    VAR var_1; 
RUN; 

Về mặt đĩa I/O, tôi tưởng tượng rằng mỗi bản ghi phải được đọc toàn bộ cho dù là gì. Nhưng có lẽ ít bộ nhớ cần phải được phân bổ để đọc các bản ghi. Mọi lời khuyên đều được đánh giá cao.

Trả lời

5

Có sự khác biệt. Hầu hết thời gian nó không phải là một sự khác biệt lớn nhưng nếu bạn bắt đầu có bộ dữ liệu rất rộng hoặc rất dài, bạn sẽ bắt đầu thấy một số lợi ích.

Tìm kiếm keep= vào liên kết dưới đây ...

http://support.sas.com/techsup/technote/ts298.html

Nếu bạn gặp vấn đề hiệu suất thì điều này có thể cạo phần giây hoặc giây tắt những gì bạn đang làm nhưng nó sẽ không cắt thời gian xử lý của bạn chỉ bằng một nửa. Hãy tìm các kỹ thuật tối ưu hóa khác nếu bạn cần.

3

Về mặt dữ liệu, tất cả các biến sẽ được đọc vào PDV trừ khi bạn chỉ định câu lệnh DROP hoặc KEEP.

Để biết thủ tục, tôi mong đợi SAS đủ thông minh để chỉ đọc mọi biến được sử dụng trong quy trình. Có lẽ ai đó có thể xác nhận điều này?

Bạn có thể dễ dàng xây dựng một số thử nghiệm để xác định điều này.

+0

Đề xuất tốt - Tôi sẽ cố gắng thực hiện một số điểm chuẩn trong quá trình đọc nhiều lần tiếp theo từ tập hợp này. –

3

Tôi không tìm thấy bất cứ điều gì cho biết rằng tuyên bố KEEP hiệu quả hơn (hoặc cần thiết) cho PROC MEANS.

Tuy nhiên, bạn có thể đạt được hiệu quả sử dụng tuyên bố WHERE cũng như sử dụng khác trong mã MEANS.

1

Tôi nghĩ câu lệnh về vị trí thường hiệu quả hơn là tùy chọn lưu giữ. Nhưng trong trường hợp này, một nơi vô dụng, và tôi không chắc chắn thêm một tùy chọn giữ trong cuộc gọi proc sẽ thay đổi một cái gì đó.

Nhưng bạn có thể kiểm tra và kiểm tra thời gian xử lý trong nhật ký. Hãy cho chúng tôi biết!

Chỉnh sửa:

Tôi đã thử nghiệm với một trong những tập dữ liệu lớn nhất mà tôi có. Với tùy chọn giữ tôi nhận được: 0,03 thời gian xử lý Nếu không có tùy chọn, tôi nhận được: 0,01 thời gian xử lý

Vì vậy, tôi đoán SAS đã được tối ưu hóa cho trường hợp này.

Các vấn đề liên quan