Closed
Description
I don't understand the compile toolchain very well, and I haven't yet gotten good profile info (see https://groups.google.com/d/msg/julia-dev/RKAahOwppNs/Kg0TFx_SBwAJ), but at least for the SubArray tests I'm guessing that this line, via jl_compress_ast
, is an enormous bottleneck in compilation. I inserted a debugging line,
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, "len = %d\n", jl_array_len(tree_literal_values));
for(int i=0; i < jl_array_len(tree_literal_values); i++) {
if (jl_egal(jl_cellref(tree_literal_values,i), v))
return i;
and saw that most of the lengths were around 10k or so. That's a heck of a lot of calls to jl_egal
. Is there anything that can be done to reduce this number?