Revision 5d03fcd948ad862458f2b7b09cc97ad66c08ac1f authored by Shuhei Kadowaki on 29 August 2022, 12:04:18 UTC, committed by Kristoffer on 29 August 2022, 20:32:31 UTC
`CachedMethodTable` was removed within #44240 as we couldn't confirm any performance improvement then. However it turns out the optimization was critical in some real world cases (e.g. #46492), so this commit revives the mechanism with the following tweaks that should make it more effective: - create method table cache per inference (rather than per local inference on a function call as on the previous implementation) - only use cache mechanism for abstract types (since we already cache lookup result at the next level as for concrete types) As a result, the following snippet reported at #46492 recovers the compilation performance: ```julia using ControlSystems a_2 = [-5 -3; 2 -9] C_212 = ss(a_2, [1; 2], [1 0; 0 1], [0; 0]) @time norm(C_212) ``` > on master ``` julia> @time norm(C_212) 364.489044 seconds (724.44 M allocations: 92.524 GiB, 6.01% gc time, 100.00% compilation time) 0.5345224838248489 ``` > on this commit ``` julia> @time norm(C_212) 26.539016 seconds (62.09 M allocations: 5.537 GiB, 5.55% gc time, 100.00% compilation time) 0.5345224838248489 ``` (cherry picked from commit 844574411fc77f5de1528a2ab30b9457238959cf)
1 parent c65611a
File | Mode | Size |
---|---|---|
compiler | ||
docs | ||
ryu | ||
special | ||
strings | ||
.gitignore | -rw-r--r-- | 154 bytes |
Base.jl | -rw-r--r-- | 14.5 KB |
Enums.jl | -rw-r--r-- | 6.9 KB |
Makefile | -rw-r--r-- | 11.2 KB |
abstractarray.jl | -rw-r--r-- | 99.1 KB |
abstractarraymath.jl | -rw-r--r-- | 15.0 KB |
abstractdict.jl | -rw-r--r-- | 15.8 KB |
abstractset.jl | -rw-r--r-- | 11.7 KB |
accumulate.jl | -rw-r--r-- | 11.8 KB |
array.jl | -rw-r--r-- | 64.7 KB |
arraymath.jl | -rw-r--r-- | 5.8 KB |
arrayshow.jl | -rw-r--r-- | 23.4 KB |
asyncevent.jl | -rw-r--r-- | 9.8 KB |
asyncmap.jl | -rw-r--r-- | 13.2 KB |
atomics.jl | -rw-r--r-- | 12.5 KB |
baseext.jl | -rw-r--r-- | 2.6 KB |
binaryplatforms.jl | -rw-r--r-- | 38.0 KB |
bitarray.jl | -rw-r--r-- | 50.6 KB |
bitset.jl | -rw-r--r-- | 12.5 KB |
bool.jl | -rw-r--r-- | 3.6 KB |
boot.jl | -rw-r--r-- | 28.2 KB |
broadcast.jl | -rw-r--r-- | 59.2 KB |
c.jl | -rw-r--r-- | 23.2 KB |
cartesian.jl | -rw-r--r-- | 11.5 KB |
channels.jl | -rw-r--r-- | 14.5 KB |
char.jl | -rw-r--r-- | 12.2 KB |
checked.jl | -rw-r--r-- | 11.7 KB |
client.jl | -rw-r--r-- | 18.7 KB |
cmd.jl | -rw-r--r-- | 17.3 KB |
combinatorics.jl | -rw-r--r-- | 8.8 KB |
complex.jl | -rw-r--r-- | 30.2 KB |
condition.jl | -rw-r--r-- | 7.0 KB |
coreio.jl | -rw-r--r-- | 1.0 KB |
cpuid.jl | -rw-r--r-- | 5.4 KB |
ctypes.jl | -rw-r--r-- | 1.7 KB |
deepcopy.jl | -rw-r--r-- | 4.5 KB |
deprecated.jl | -rw-r--r-- | 10.5 KB |
dict.jl | -rw-r--r-- | 21.4 KB |
div.jl | -rw-r--r-- | 10.5 KB |
download.jl | -rw-r--r-- | 989 bytes |
env.jl | -rw-r--r-- | 6.6 KB |
error.jl | -rw-r--r-- | 10.4 KB |
errorshow.jl | -rw-r--r-- | 33.6 KB |
essentials.jl | -rw-r--r-- | 25.6 KB |
experimental.jl | -rw-r--r-- | 10.8 KB |
exports.jl | -rw-r--r-- | 13.6 KB |
expr.jl | -rw-r--r-- | 33.3 KB |
fastmath.jl | -rw-r--r-- | 13.0 KB |
file.jl | -rw-r--r-- | 37.4 KB |
filesystem.jl | -rw-r--r-- | 7.9 KB |
float.jl | -rw-r--r-- | 29.7 KB |
floatfuncs.jl | -rw-r--r-- | 15.5 KB |
gcutils.jl | -rw-r--r-- | 6.2 KB |
generator.jl | -rw-r--r-- | 3.9 KB |
gmp.jl | -rw-r--r-- | 33.9 KB |
hashing.jl | -rw-r--r-- | 3.1 KB |
iddict.jl | -rw-r--r-- | 5.7 KB |
idset.jl | -rw-r--r-- | 1.2 KB |
indices.jl | -rw-r--r-- | 18.4 KB |
initdefs.jl | -rw-r--r-- | 13.9 KB |
int.jl | -rw-r--r-- | 28.6 KB |
intfuncs.jl | -rw-r--r-- | 27.8 KB |
io.jl | -rw-r--r-- | 40.1 KB |
iobuffer.jl | -rw-r--r-- | 16.8 KB |
iostream.jl | -rw-r--r-- | 17.3 KB |
irrationals.jl | -rw-r--r-- | 7.6 KB |
iterators.jl | -rw-r--r-- | 41.1 KB |
libc.jl | -rw-r--r-- | 14.9 KB |
libdl.jl | -rw-r--r-- | 9.5 KB |
libuv.jl | -rw-r--r-- | 4.5 KB |
linked_list.jl | -rw-r--r-- | 4.2 KB |
loading.jl | -rw-r--r-- | 82.4 KB |
lock.jl | -rw-r--r-- | 11.4 KB |
locks-mt.jl | -rw-r--r-- | 2.1 KB |
logging.jl | -rw-r--r-- | 22.3 KB |
math.jl | -rw-r--r-- | 36.5 KB |
mathconstants.jl | -rw-r--r-- | 2.5 KB |
meta.jl | -rw-r--r-- | 15.4 KB |
methodshow.jl | -rw-r--r-- | 13.5 KB |
missing.jl | -rw-r--r-- | 13.6 KB |
mpfr.jl | -rw-r--r-- | 40.8 KB |
multidimensional.jl | -rw-r--r-- | 69.7 KB |
multimedia.jl | -rw-r--r-- | 15.5 KB |
multinverses.jl | -rw-r--r-- | 5.6 KB |
namedtuple.jl | -rw-r--r-- | 13.6 KB |
ntuple.jl | -rw-r--r-- | 2.7 KB |
number.jl | -rw-r--r-- | 7.5 KB |
opaque_closure.jl | -rw-r--r-- | 866 bytes |
operators.jl | -rw-r--r-- | 33.2 KB |
options.jl | -rw-r--r-- | 2.4 KB |
ordering.jl | -rw-r--r-- | 5.2 KB |
osutils.jl | -rw-r--r-- | 1.2 KB |
pair.jl | -rw-r--r-- | 1.7 KB |
parse.jl | -rw-r--r-- | 13.9 KB |
path.jl | -rw-r--r-- | 16.9 KB |
pcre.jl | -rw-r--r-- | 8.4 KB |
permuteddimsarray.jl | -rw-r--r-- | 8.6 KB |
pkgid.jl | -rw-r--r-- | 1.2 KB |
pointer.jl | -rw-r--r-- | 6.5 KB |
process.jl | -rw-r--r-- | 22.0 KB |
promotion.jl | -rw-r--r-- | 14.7 KB |
range.jl | -rw-r--r-- | 52.1 KB |
rational.jl | -rw-r--r-- | 17.0 KB |
reduce.jl | -rw-r--r-- | 36.5 KB |
reducedim.jl | -rw-r--r-- | 31.8 KB |
reflection.jl | -rw-r--r-- | 55.6 KB |
refpointer.jl | -rw-r--r-- | 7.4 KB |
refvalue.jl | -rw-r--r-- | 1.7 KB |
regex.jl | -rw-r--r-- | 26.7 KB |
reinterpretarray.jl | -rw-r--r-- | 29.5 KB |
reshapedarray.jl | -rw-r--r-- | 13.4 KB |
rounding.jl | -rw-r--r-- | 7.1 KB |
secretbuffer.jl | -rw-r--r-- | 5.5 KB |
set.jl | -rw-r--r-- | 21.1 KB |
shell.jl | -rw-r--r-- | 16.6 KB |
show.jl | -rw-r--r-- | 103.6 KB |
simdloop.jl | -rw-r--r-- | 5.4 KB |
some.jl | -rw-r--r-- | 3.4 KB |
sort.jl | -rw-r--r-- | 33.7 KB |
stacktraces.jl | -rw-r--r-- | 9.9 KB |
stat.jl | -rw-r--r-- | 12.7 KB |
stream.jl | -rw-r--r-- | 46.6 KB |
subarray.jl | -rw-r--r-- | 19.1 KB |
summarysize.jl | -rw-r--r-- | 6.1 KB |
sysimg.jl | -rw-r--r-- | 4.0 KB |
sysinfo.jl | -rw-r--r-- | 15.7 KB |
task.jl | -rw-r--r-- | 26.5 KB |
threadcall.jl | -rw-r--r-- | 4.0 KB |
threadingconstructs.jl | -rw-r--r-- | 9.8 KB |
threads.jl | -rw-r--r-- | 850 bytes |
threads_overloads.jl | -rw-r--r-- | 2.3 KB |
timing.jl | -rw-r--r-- | 14.8 KB |
toml_parser.jl | -rw-r--r-- | 35.9 KB |
traits.jl | -rw-r--r-- | 2.4 KB |
ttyhascolor.jl | -rw-r--r-- | 967 bytes |
tuple.jl | -rw-r--r-- | 16.1 KB |
twiceprecision.jl | -rw-r--r-- | 29.6 KB |
util.jl | -rw-r--r-- | 24.6 KB |
uuid.jl | -rw-r--r-- | 3.2 KB |
version.jl | -rw-r--r-- | 11.2 KB |
version_git.sh | -rw-r--r-- | 3.6 KB |
views.jl | -rw-r--r-- | 8.3 KB |
weakkeydict.jl | -rw-r--r-- | 6.0 KB |
Computing file changes ...