Tôi đã thực hiện một số thử nghiệm trên Android để xác minh hiệu suất của thuật toán (như FFT) có thể được cải thiện như thế nào nếu nó được song song. Tôi đã thực hiện các thuật toán bằng cách sử dụng pthread với các chủ đề JNI (FFTW) và Java (từ JTransforms). Thay vì nhận được một hiệu suất tốt hơn bằng cách sử dụng các chủ đề như mong đợi, tôi đã có kết quả tốt hơn bằng cách sử dụng thuật toán nối tiếp. Nó không rõ ràng với tôi tại sao tôi đã có những kết quả kể từ khi tôi thực hiện những thử nghiệm trên các thiết bị đa lõi. Dường như thuật toán lập lịch được hệ thống Android sử dụng khác với hệ thống được Linux sử dụng và bạn không may mắn nếu bạn muốn sử dụng nhiều CPU để thực hiện đa xử lý trên Android.Multiprocessing trên Android
Ví dụ với FFTW: Mã JNI nằm ở https://github.com/maxrosan/DspBenchmarking/blob/master/jni/fftw_jni.c và giao diện của mã là https://github.com/maxrosan/DspBenchmarking/blob/master/src/br/usp/ime/dspbenchmarking/algorithms/fftw/FFTW.java.
Phương pháp được gọi trong thử nghiệm là 'thực thi'.
Ví dụ với Java tinh khiết: https://github.com/maxrosan/DspBenchmarking/blob/master/src/br/usp/ime/dspbenchmarking/algorithms/jtransforms/fft/DoubleFFT_1D2TAlgorithm.java
Đây là phương pháp được gọi là 'thực hiện'.
'thực thi' và 'thực hiện' được gọi bên trong một chuỗi khác.
Sử dụng ThreadPoolExecutor hoặc AsyncTask với executeOnExecutor. –
Tôi không chắc chắn về câu cuối cùng của bạn, bạn đã thử loại bài kiểm tra nào? Bạn có thể cho chúng tôi thấy một số mã không? – Desert
Ồ, vì vậy bạn đang sử dụng đa luồng C++. Tôi khuyên bạn nên thử sử dụng java đa luồng hoặc tham khảo ý kiến với mọi người, những người hiểu biết về C++ tốt, chỉ để kiểm tra xem mọi thứ có ổn với nó hay không. – Desert