|
From: Donal K. F. <don...@ma...> - 2017-06-04 07:56:32
|
On 04/06/2017 04:28, Kevin Kenny wrote:
> LLVM appears to have performance that goes up quadratically or worse
> in the number of basic blocks, and expanding parseBuiltinsTxt gives a
> lot of them.
I noticed that. I probably need to see if upgrading the LLVM version has
an impact[*], as this is the sort of thing that is awful for us (the
code in question isn't a particularly long case from our perspective)
and there's been quite a bit of discussion on LLVM mailing lists about
how some operations are stupidly expensive given how frequently they're
used. It's also possible that I should tune the inlining level for some
instruction implementations. For example, there's unlikely to be a lot
of benefit from doing it with some of the [string] operations, as
they're necessarily going to be operating on STRINGs.
We probably need to make LIST and DICT types to get proper
interpretations of what is going on in that procedure. That would get
rid of lot of the splitting as we'd be able to at least do things like
proving that the [foreach], [lappend] and [dict set] calls can't fail.
Which would be nice.
Donal.
[* Not trivial, alas. Each upgrade tinkers a bit with the API and breaks
stuff, which is why we've mostly sat at around 3.7. ]
|