Tôi có một tập tin lisp mà rất nhiều lấy mẫu, tập tin I/O và số học trong một vòng lặp. (Tôi làm particle filtering trong lisp thông thường.) Tôi đang biên dịch tệp lisp của mình bằng cách sử dụng lệnh compile-file
. Tôi cũng sử dụng các (declaim (optimize (speed 3) (debug 0) (safety 0)))
ở đầu của tập tin lisp của tôi như tôi muốn có kết quả của tôi càng nhanh càng tốt.
Tôi sử dụng (time (load "/....../myfile.lisp")
và (time (load "/......./myfile.dx64fsl")
để đo tốc độ. Vấn đề là biên dịch không mang lại lợi ích gì cho tôi. Không có cải tiến. Tôi có làm gì sai không? Có cách nào để cải thiện mọi thứ không? Tốc độ là tiêu chí quan trọng nhất để tôi có thể hy sinh rất nhiều để có được phản ứng nhanh. Tôi không có ý tưởng về loại vấn đề này nên mọi sự giúp đỡ sẽ được đánh giá cao.
Hơn nữa, khi tôi tăng số lượng hạt (mỗi hạt là một vectơ có kích thước ~ 40) đến 10000 mã sẽ rất chậm, do đó có thể có một số vấn đề về bộ nhớ.
Cảm ơn bạn rất nhiều trước.Common Lisp Biên dịch và thực hiện thời gian
chỉnh sửa: Đây là kết quả lược tả với 1000 hạt và 50 lần lặp.
(LOAD "/.../myfile.dx64fsl") took 77,488,810 microseconds (77.488810 seconds) to run
with 8 available CPU cores.
During that period, 44,925,468 microseconds (44.925470 seconds) were spent in user mode
32,005,440 microseconds (32.005440 seconds) were spent in system mode
2,475,291 microseconds (2.475291 seconds) was spent in GC.
1,701,028,429 bytes of memory allocated.
1,974 minor page faults, 0 major page faults, 0 swaps.
; Warning: Function CREATE-MY-DBN has been redefined, so times may be inaccurate.
; MONITOR it again to record calls to the new definition.
; While executing: MONITOR::MONITOR-INFO-VALUES, in process repl-thread(10).
Cons
% % Per Total Total
Function Time Cons Calls Sec/Call Call Time Cons
------------------------------------------------------------------------------------------
SAMPLE: 25.61 26.14 2550000 0.000005 174 13.526 443040000
DISCRETE-PARENTS: 19.66 3.12 4896000 0.000002 11 10.384 52800000
LINEAR-GAUSSIAN-MEAN: 8.86 3.12 1632000 0.000003 32 4.679 52800000
DISCRETE-PARENT-VALUES: 7.47 12.33 3264000 0.000001 64 3.946 208896000
LIST-DIFFERENCE: 6.41 25.69 6528000 0.000001 67 3.384 435392000
CONTINUOUS-PARENTS: 6.33 0.00 1632000 0.000002 0 3.343 0
PF-STEP: 5.17 0.23 48 0.056851 80080 2.729 3843840
CONTINUOUS-PARENT-VALUES: 4.13 7.20 1632000 0.000001 75 2.184 122048000
TABLE-LOOKUP: 3.85 8.39 2197000 0.000001 65 2.035 142128000
PHI-INVERSE: 3.36 0.00 1479000 0.000001 0 1.777 0
PHI-INTEGRAL: 3.32 1.38 2958000 0.000001 8 1.755 23344000
PARENT-VALUES: 2.38 10.65 1122000 0.000001 161 1.259 180528016
CONDITIONAL-PROBABILITY: 1.41 0.00 255000 0.000003 0 0.746 0
------------------------------------------------------------------------------------------
TOTAL: 97.96 98.24 30145048 51.746 1664819856
Estimated monitoring overhead: 21.11 seconds
Estimated total monitoring overhead: 23.93 seconds
với 10000 hạt và 50 lần lặp:
(LOAD "/.../myfile.dx64fsl") took 809,931,702 microseconds (809.931700 seconds) to run
with 8 available CPU cores.
During that period, 476,627,937 microseconds (476.627930 seconds) were spent in user mode
328,716,555 microseconds (328.716550 seconds) were spent in system mode
54,274,625 microseconds (54.274624 seconds) was spent in GC.
16,973,590,588 bytes of memory allocated.
10,447 minor page faults, 417 major page faults, 0 swaps.
; Warning: Funtion CREATE-MY-DBN has been redefined, so times may be inaccurate.
; MONITOR it again to record calls to the new definition.
; While executing: MONITOR::MONITOR-INFO-VALUES, in process repl-thread(10).
Cons
% % Per Total Total
Function Time Cons Calls Sec/Call Call Time Cons
-------------------------------------------------------------------------------------------
SAMPLE: 25.48 26.11 25500000 0.000006 174 144.211 4430400000
DISCRETE-PARENTS: 18.41 3.11 48960000 0.000002 11 104.179 528000000
LINEAR-GAUSSIAN-MEAN: 8.61 3.11 16320000 0.000003 32 48.751 528000000
LIST-DIFFERENCE: 7.57 25.66 65280000 0.000001 67 42.823 4353920000
DISCRETE-PARENT-VALUES: 7.50 12.31 32640000 0.000001 64 42.456 2088960000
CONTINUOUS-PARENTS: 5.83 0.00 16320000 0.000002 0 32.980 0
PF-STEP: 5.05 0.23 48 0.595564 800080 28.587 38403840
TABLE-LOOKUP: 4.52 8.38 21970000 0.000001 65 25.608 1421280000
CONTINUOUS-PARENT-VALUES: 4.25 7.19 16320000 0.000001 75 24.041 1220480000
PHI-INTEGRAL: 3.15 1.38 29580000 0.000001 8 17.849 233440000
PHI-INVERSE: 3.12 0.00 14790000 0.000001 0 17.641 0
PARENT-VALUES: 2.87 10.64 11220000 0.000001 161 16.246 1805280000
CONDITIONAL-PROBABILITY: 1.36 0.00 2550000 0.000003 0 7.682 0
-------------------------------------------------------------------------------------------
TOTAL: 97.71 98.12 301450048 553.053 16648163840
Estimated monitoring overhead: 211.08 seconds
Estimated total monitoring overhead: 239.13 seconds
vì vậy, tệp của bạn không chỉ chứa các định nghĩa chức năng? tức là, nó thực sự thực hiện một trong các chức năng đúng không? –
Tôi thực sự có rất nhiều chức năng được xác định trong một số thư mục.Lần đầu tiên tôi tải nó. Sau đó, trong tập tin của tôi, trong một vòng lặp, tôi gọi một trong các hàm được định nghĩa để nhận được kết quả, đó là giá trị trung bình và phương sai của các biến truy vấn mà tôi có. Tôi sử dụng các chức năng khác để xây dựng mạng Bayes của tôi lúc đầu, sau đó tôi gọi một hàm duy nhất mỗi lần trong một vòng lặp để làm suy luận. – YBE
Bạn có nên biên dịch các tệp khác không? –