作者stupid0319 (徵女友)
看板C_and_CPP
標題Re: [問題] 矩陣運算
時間Tue Oct 5 12:58:02 2010
※ 引述《stone0912 (開心石)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 矩陣運算耗費太久的時間
: 舉例說明:
: EX1: ~矩陣運算~
: int A[62][62][34];
: for (int i=-90;i<=90;i++){
: for (int j=-90;j<=90;j++){
: for (int iii=1;iii<=61;iii++){
: for (int jjj=1;jjj<=61;jjj++){
: for (int kkk=1;kkk<=33;kkk++){
: A[iii][jjj][kkk]=(iii+jjj)/kkk }}}}}
: 就需要10多秒~
: ======================================================================
: EX2: ~矩陣累加~
: int A[62][62][34];
: int main(){
: for (int i=-90;i<=90;i++){
: for (int j=-90;j<=90;j++){
: for (int iii=1;iii<=61;iii++) {
: for (int jjj=1;jjj<=61;jjj++) {
: for (int kkk=1;kkk<=33;kkk++) {
: A[iii][jjj][kkk]=A[iii][jjj][kkk]+(iii+jjj)/kkk; }}}}}
: 則需20多秒~
: 是否有針對"矩陣運算" 及 "矩陣累加"進行時間改善的方法???
: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
: VC++
DWORD WINAPI MyThreadFunction( LPVOID lpParam ) {
for (int j=-90;j<=90;j++)
for (int iii=1;iii<=61;iii++)
for (int jjj=1;jjj<=61;jjj++)
for (int kkk=1;kkk<=33;kkk++)
A[iii][jjj][kkk]=A[iii][jjj][kkk]+(iii+jjj)/kkk;
}
int main(){
for (int i=-90;i<=90;i++)
CreateThread(NULL,0,MyThreadFunction,NULL,0,NULL);
}
像這樣子樣吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.78.26
→ loveme00835:執行緒從開始到結束也是一樣久阿= =" 10/05 13:04
→ stupid0319:原po執行是20秒分散給180個執行緒就 20/180 秒~亂掰 10/05 13:07
→ james732:理想頂多是 (20 / CPU數量) 吧? 10/05 13:08