My point was that if that loop you posted is run in global scope, it's
likely to be slow.

http://docs.julialang.org/en/release-0.4/manual/performance-tips/

On Wed, Dec 2, 2015 at 11:04 AM, Rajn <rjngrj2...@gmail.com> wrote:

> Stefan,
> I have a function which loads the data structure, loads the actual data
> file and defines frame numbers, determines PACKSIZE etc.
> But to test the performance I did not use the function for but as in
> global scope.
>
> Tom, I will look up your suggestion.
> Thanks
>
> On Wednesday, December 2, 2015 at 12:56:48 AM UTC-5, Rajn wrote:
>>
>> I am reading a binary file with a structure. Matlab takes long and I
>> wanted to run Julia for speed improvement.
>> It reads camera frames, each with certain bytesize and each frame
>> consisting of parameters of certain byte size and Type.
>>
>> frames: is declared Int64 and runs from 1:frames
>> PACKSIZE is declared Int64 and is constant
>> key_ind is Int16 and is a vector. This denotes the parameters which
>> defines the frames. There are 200 but I am only interested in 3.
>> Type  declared Type as: 1x3 Array of Int16, Int16, Float64...
>> Num as Int64 and 3x1 elements and each is 1. This says that there are
>> only 1 elements of each Type in a frame.
>>
>> This is where I want to store the data...
>> dCell = 3x1 Array{Any,2} of  Array{Int16}(1xframes)
>> Array{Int16}(1xframes) and Array{Float64}(1xframes)
>>
>> each camera frame is of PACKSIZE in bytes.
>>
>> To summarize I have declared the type of each variable before I start the
>> read process.
>>
>> #Read and assemble the data structured as series of Int16,Int16,Float64...
>> for j=1:length(frames);
>>     Pos = frames[j]*PACKSIZE ;
>>      for k=1:size(key_ind,1)
>>         seek(fid,Pos[k]);
>>         value = read(ifov_fid, Type[k][1],Num[k]);   #Num[k] is all ones.
>>         dCell[k][:,j]=value;
>>     end
>> end
>>
>> For 500,000 frames it takes as much time as Matlab. Not getting warnings
>> or errors but would like to know how to improve the code for speed or
>> efficiency.
>>
>> I am not familiar with binary read and was wondering if this is 'normal'
>> and one cannot do any better? If I were to write this in C would it also
>> take the same amount (maybe because of my sloppy code)? I should perhaps
>> give details on the processor I use but because I am only comparing Matlab
>> with Julia - and I am not doing any parallelization - I think that OS
>> details are not important?
>> In the Matlab code I am declaring few variables types but not being very
>> careful as I am in with Julia.
>> I am not reading the entire structure i.e., key_ind =1:3 of 200, each
>> with different byte size. Therefore, I am not providing @time but if
>> curious it is ~30-45 seconds for 500000 frames. The inner for-loop takes
>> about ~0.00007 seconds.
>> Thanks
>>
>>
>>

Reply via email to