<p dir="auto">I don't understand the compile toolchain very well, and I haven't yet gotten good profile info (see <a href="https://groups.google.com/d/msg/julia-dev/RKAahOwppNs/Kg0TFx_SBwAJ" rel="nofollow">https://groups.google.com/d/msg/julia-dev/RKAahOwppNs/Kg0TFx_SBwAJ</a>), but at least for the SubArray tests I'm guessing that <a href="https://github.com/JuliaLang/julia/blob/c70ab26bb677c92f0d8e0ae41c3035217a4b111f/src/dump.c#L622">this line</a>, via <code class="notranslate">jl_compress_ast</code>, is an enormous bottleneck in compilation. I inserted a debugging line,</p>
<div class="highlight highlight-source-diff notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="diff --git a/src/dump.c b/src/dump.c
index e11bff5..9c3c96f 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -618,6 +618,7 @@ static int is_ast_node(jl_value_t *v)

 static int literal_val_id(jl_value_t *v)
 {
+    jl_printf(JL_STDOUT, &quot;len = %d\n&quot;, jl_array_len(tree_literal_values));
     for(int i=0; i &lt; jl_array_len(tree_literal_values); i++) {
         if (jl_egal(jl_cellref(tree_literal_values,i), v))
             return i;"><pre class="notranslate"><span class="pl-c1">diff --git a/src/dump.c b/src/dump.c</span>
index e11bff5..9c3c96f 100644
<span class="pl-md">--- a/src/dump.c</span>
<span class="pl-mi1">+++ b/src/dump.c</span>
<span class="pl-mdr">@@ -618,6 +618,7 @@</span> static int is_ast_node(jl_value_t *v)

 static int literal_val_id(jl_value_t *v)
 {
<span class="pl-mi1"><span class="pl-mi1">+</span>    jl_printf(JL_STDOUT, "len = %d\n", jl_array_len(tree_literal_values));</span>
     for(int i=0; i &lt; jl_array_len(tree_literal_values); i++) {
         if (jl_egal(jl_cellref(tree_literal_values,i), v))
             return i;</pre></div>
<p dir="auto">and saw that most of the lengths were around 10k or so. That's a heck of a lot of calls to <code class="notranslate">jl_egal</code>. Is there anything that can be done to reduce this number?</p>
<p dir="auto">Hey all,</p>
<p dir="auto">Recently, I've made changes to <a href="https://github.com/jkaye2012/Redis.jl">Redis.jl</a> to transition from v0.3 to v0.4. I'd like to tag the latest version so that users can stop getting deprecation warnings in their v0.4 code. Unfortunately, I've ran into an issue that I can't seem to resolve.</p>
<p dir="auto">This code was working under v0.3: <a href="https://github.com/jkaye2012/Redis.jl/blob/master/src/client.jl#L47">https://github.com/jkaye2012/Redis.jl/blob/master/src/client.jl#L47</a></p>
<p dir="auto">Under v0.4, <code class="notranslate">nb_available()</code> seems to always be returning 0. I know that there is data available to the socket; I see it being sent from the Redis server, and if I change the code to use a blocking read, the data is read in as expected (the API can't actually use a blocking read for reasons detailed in that code).</p>
<p dir="auto">Is this an issue in nb_available, or am I misunderstanding something? Is there another way that I should be trying to accomplish this?</p>
<p dir="auto">Thanks,<br>
Jordan</p>