Thanks for all the suggestions!

I wasn't able to get ProfileView to load, but I was able to use Profile,
getting some suggestive information.  Boiled down a lot, I see that
most of my time is going into these functions:

cnt.   line  Julia code
====   ===   ==========
9647   131   full_list = vcat([ ns_name, ns, name ], data_list)
4954   132   full_str  = join(full_list, fs_tsv)
4854   106   ns_name   = replace(line, re_split, s -> "")
4836   128   data_list = map(key -> get(parm_hash, key, ""), prop_list)
3532   110   split_arr = split(line, re_split)
1214   130   ns, name  = split(ns_name, '_', 2)

Most of the time is being spent in this set of lines:

4836   data_list = map(key -> get(parm_hash, key, ""), prop_list)
1214   ns, name  = split(ns_name, '_', 2)
9647   full_list = vcat([ ns_name, ns, name ], data_list)
4954   full_str  = join(full_list, fs_tsv)

prop_list contains names of Neo4j node properties.  Driven by this, I 
create data_list,
which contains the data values for any properties which have been seen in 
the input.
I then pick up ns_name (eg, "foo_bar"), split into two pieces, and prepend 
all three to
the beginning of data_list to get full_list. Concatenating that with a 
separator string
(typically, a tab), I get the full TSV output string.

Suggestions?  For example, are any of these functions known to be slow? 
 Alternatively, is
there a way to reduce the amount of allocation and de-allocation I'm doing?

-r

Reply via email to