2012-01-27 17 views
5

Đối với một số dịch vụ web, tôi cần tăng tốc trên các ô ggplot2 theo yêu cầu càng nhiều càng tốt. Với sự giới thiệu của memoise, một số bộ nhớ đệm được tự động giới thiệu trên các chức năng âm mưu, làm cho cốt truyện thứ hai nhanh hơn đáng kể so với cái đầu tiên. Tuy nhiên dịch vụ web của tôi chỉ vẽ 1 ô trên mỗi phiên R, do đó, điều này không giúp theo mặc định.Đầu ra ggplot2 được lưu trước bộ nhớ đệm bằng cách sử dụng memoise để sử dụng trong dịch vụ web

Tôi đã tự hỏi nếu nó có thể khôn ngoan/có thể/hữu ích để thực hiện trước (ví dụ: thực hiện một số phép tính tải, trước yêu cầu thực tế), hoặc lưu/tải cache ẩn vào đĩa cho các cuộc gọi thông thường + đầu ra.

Một ví dụ:

> library(ggplot2); 
> pdf(tempfile()); 
> system.time(print(qplot(speed, dist, color=speed, data=cars, geom=c("point", "smooth")))); 
    user system elapsed 
    0.496 0.008 0.512 
> system.time(print(qplot(speed, dist, color=speed, data=cars, geom=c("point", "smooth")))); 
    user system elapsed 
    0.312 0.004 0.322 
+0

Tôi đã chỉnh sửa tiêu đề của bạn, tôi đã giải thích nó khi bạn tìm kiếm phiên bản ggplot2 trước thời gian sử dụng memoise (pre-memoise ggplot2). Tôi hy vọng điều này phản ánh ý định của bạn và vui lòng thay đổi lại nếu không. –

+0

Tôi tò mò muốn biết liệu bạn có thấy bất kỳ cải tiến tốc độ nào bằng 'memoise()' ing một số hàm 'g <- ggplot() ...' hay không. Tôi đã làm như vậy (* trong * một phiên), nhưng hầu như không có bất kỳ cải tiến nào về tốc độ vẽ đồ thị. Có thể tôi đang làm sai ... – maxheld

Trả lời

4

AFAIK, gói memoise chỉ hỗ trợ bộ nhớ cache trong phiên. Nếu bạn thoát khỏi phiên R, bạn sẽ mất bộ nhớ cache. Tôi không chắc liệu mô hình cacheSweave/knitr có giúp ích cho dịch vụ web của bạn hay không, nhưng tôi tin rằng bạn phải ghi kết quả được lưu trong bộ nhớ cache vào đĩa giống như hai gói này. Nếu cùng một mã được chạy (xác minh bằng MD5), bạn chỉ cần tải bộ nhớ cache. Bạn có thể cung cấp một ví dụ để tôi có thể biết vấn đề tốt hơn.

+0

[Phiên bản phát triển] (https://github.com/hadley/memoise/releases) của 'memoise' hiện có bộ nhớ cache liên tục với tùy chọn' cache_filesystem'. –

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