Hi all, I'm trying to minimize memory allocation while doing line-oriented processing on a fairly large set of text files. SubString and pre-allocated outputs have helped, but I'm still getting memory allocations proportional to the size of the input set and looking for new ideas.
The toy example below illustrates how the allocations grow. Am I right to suspect that float() is the culprit. Any thoughts for how to cut out the remaining allocations? thanks, Keith julia> function str_with_sub(N) mystr = ascii("1.1,2.2") fs=Array(Float64,2) for i in 1:N dostr!(mystr, fs) end end str_with_sub (generic function with 1 method) julia> function dostr!(mystr, fs) fs[1] = float(SubString(mystr,1,3)) fs[2] = float(SubString(mystr,5,7)) end dostr! (generic function with 1 method) julia> @time str_with_sub(4) elapsed time: 0.008214327 seconds (190612 bytes allocated) julia> @time str_with_sub(4) elapsed time: 8.441e-6 seconds (496 bytes allocated) julia> @time str_with_sub(4) elapsed time: 6.493e-6 seconds (496 bytes allocated) julia> @time str_with_sub(6) elapsed time: 7.074e-6 seconds (688 bytes allocated) julia> @time str_with_sub(8) elapsed time: 7.437e-6 seconds (880 bytes allocated)