is there fast way for this problem
情報
この質問は閉じられています。 編集または回答するには再度開いてください。
古いコメントを表示
hi, is there a fast way to deal with this problem:
I have 17770 files, each file has structure as:
id_user(integer), rate(integer),date
each file has unique id_user but may share these id_users with other files.
what I want is: each unique id _user be row in array such as: id_user1: rate1 date1 rate3 date3......raten daten id_user2: rate3 date3..rate20 date20........... etc..
I mean rate1 for ex. is rate of user1 in file 1 and rate3 in file 3 and so on. where id_user1 for ex. be in file 1 and file 3 id_user2 be in file 3 and file 20
I wrote code , it is work correctly, but very very slow, it need three hours to creat array with just 50 id_users(read all 17770). I have 480000 id's of users,I have to look for their ratings in 17770 files. I placed my files in folder, then read it one after one. I looked for unique id of users ,then use function (find)in all 17770. Each time looked for id of 30 users as ex. n all files ,then record their ratings in array , but this process take long time, where to accumulate data for 30 users take three hours .
any suggestions, advices may help me
thanks in advance
0 件のコメント
回答 (1 件)
Robert Cumming
2012 年 1 月 9 日
are you preallocating? use the profiler to help locate the time where the code takes longest
profile on
% run your code
profile viewer
Run on a subset of your files for testing - then expand to include more files.
9 件のコメント
huda nawaf
2012 年 1 月 9 日
per isakson
2012 年 1 月 9 日
see: http://undocumentedmatlab.com/blog/datenum-performance/
huda nawaf
2012 年 1 月 9 日
huda nawaf
2012 年 1 月 9 日
Robert Cumming
2012 年 1 月 10 日
The other functions will be called by functions you wrote. As well as the total time - look at the functions that called the most - any small saving in that will have a much larger effect.
Is your table above saying that you have 1507 calls to datenum - and that takes 1178 seconds!? That doesn't look right to me.... Or am I misinterpreting the table.
Also check you are pre-allocating any arrays.
huda nawaf
2012 年 1 月 10 日
Robert Cumming
2012 年 1 月 10 日
Pre-allocating the rows only is not good enough - you have to preallocate the full matrix - why cant you pre-allocate the columns?
On the error the function is not found by matlab - can you find it manually?
huda nawaf
2012 年 1 月 11 日
Robert Cumming
2012 年 1 月 11 日
either preallocate tobigger than you need and check that it does not grow - or do a preloop to determine size. it will speed things up.
この質問は閉じられています。
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!