diff options
-rw-r--r-- | docs/dist/doc/README-1812.html | 98 | ||||
-rw-r--r-- | docs/dist/doc/index.html | 1 |
2 files changed, 99 insertions, 0 deletions
diff --git a/docs/dist/doc/README-1812.html b/docs/dist/doc/README-1812.html new file mode 100644 index 000000000..1d5e24335 --- /dev/null +++ b/docs/dist/doc/README-1812.html @@ -0,0 +1,98 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> <head> +<title>AspectJ 1.8.12 Readme</title> +<style type="text/css"> +<!-- + P { margin-left: 20px; } + PRE { margin-left: 20px; } + LI { margin-left: 20px; } + H4 { margin-left: 20px; } + H3 { margin-left: 10px; } +--> +</style> +</head> + +<body> +<div align="right"><small> +© Copyright 2017 Contributors. +All rights reserved. +</small></div> + +<h1>AspectJ 1.8.12 Readme</h1> + +<p>This is a small release that includes a backport of some 1.9.0 work that improves +the performance of Spring AOP (or any system consuming AspectJ in a similar way to Spring). + +<p>Dave Syer recently created a series of benchmarks for checking the speed of Spring-AspectJ: +<tt><a href="https://github.com/dsyer/spring-boot-aspectj">https://github.com/dsyer/spring-boot-aspectj</a></tt> + +<p>Here we can see the numbers for AspectJ 1.8.11 (on an older Macbook Pro): + +<pre><code> +Benchmark (scale) Mode Cnt Score Error Units +StartupBenchmark.ltw N/A avgt 10 2.656 ~ 0.166 s/op +StartupBenchmark.ltw_100 N/A avgt 10 2.618 ~ 0.063 s/op +StartupBenchmark.spring v0_10 avgt 10 2.071 ~ 0.044 s/op +StartupBenchmark.spring v1_10 avgt 10 2.210 ~ 0.058 s/op +StartupBenchmark.spring v1_100 avgt 10 2.260 ~ 0.068 s/op +StartupBenchmark.spring v10_50 avgt 10 2.933 ~ 0.039 s/op +StartupBenchmark.spring v20_50 avgt 10 3.832 ~ 0.094 s/op +StartupBenchmark.spring v20_100 avgt 10 3.959 ~ 0.047 s/op +StartupBenchmark.spring a0_10 avgt 10 2.073 ~ 0.028 s/op +StartupBenchmark.spring a1_10 avgt 10 2.729 ~ 0.061 s/op +StartupBenchmark.spring a1_100 avgt 10 2.750 ~ 0.029 s/op +StartupBenchmark.spring a10_50 avgt 10 7.153 ~ 0.075 s/op +StartupBenchmark.spring a10_100 avgt 10 7.152 ~ 0.059 s/op +StartupBenchmark.spring a20_50 avgt 10 11.430 ~ 0.105 s/op +StartupBenchmark.spring a20_100 avgt 10 11.497 ~ 0.162 s/op +</code></pre> + +<p>So this is the average *startup time* of an app affected by aspects applying to the beans involved. +Where numbers are referenced the first is the number of aspects/pointcuts and the second +is the number of beans. The 'a' indicates an annotation based pointcut vs a non-annotation +based pointcut ('v'). Notice things are much worse for annotation based pointcuts. At 20 +pointcuts and 50 beans the app is 9 seconds slower to startup. +<br> + +<p>In AspectJ 1.8.12 and 1.9.0.RC1 some work has been done here. The key change is to recognize that the use +of annotations with runtime retention is much more likely than annotations with class level +retention. Retrieving annotations with class retention is costly because we must open the +bytes for the class file and dig around in there (vs runtime retention which are immediately +accessible by reflection on the types). In 1.8.11 the actual type of the annotation involved +in the matching is ignored and the code will fetch *all* the annotations on the type/method/field +being matched against. So even if the match is looking for a runtime retention annotation, we +were doing the costly thing of fetching any class retention annotations. In 1.8.12/1.9.0.RC1 +we take the type of the match annotation into account - allowing us to skip opening the classfiles +in many cases. There is also some deeper work on activating caches that were not previously +being used correctly but the primary change is factoring in the annotation type. + +<p>What difference does that make? + +AspectJ 1.8.12: +<pre><code> +Benchmark (scale) Mode Cnt Score Error Units +StartupBenchmark.ltw N/A avgt 10 2.620 ~ 0.130 s/op +StartupBenchmark.ltw_100 N/A avgt 10 2.567 ~ 0.038 s/op +StartupBenchmark.spring v0_10 avgt 10 2.044 ~ 0.027 s/op +StartupBenchmark.spring v1_10 avgt 10 2.195 ~ 0.026 s/op +StartupBenchmark.spring v1_100 avgt 10 2.237 ~ 0.039 s/op +StartupBenchmark.spring v10_50 avgt 10 2.774 ~ 0.038 s/op +StartupBenchmark.spring v20_50 avgt 10 3.488 ~ 0.116 s/op +StartupBenchmark.spring v20_100 avgt 10 3.642 ~ 0.080 s/op +StartupBenchmark.spring a0_10 avgt 10 2.067 ~ 0.034 s/op +StartupBenchmark.spring a1_10 avgt 10 2.159 ~ 0.030 s/op +StartupBenchmark.spring a1_100 avgt 10 2.207 ~ 0.020 s/op +StartupBenchmark.spring a10_50 avgt 10 2.471 ~ 0.031 s/op +StartupBenchmark.spring a10_100 avgt 10 2.517 ~ 0.045 s/op +StartupBenchmark.spring a20_50 avgt 10 2.842 ~ 0.049 s/op +StartupBenchmark.spring a20_100 avgt 10 2.916 ~ 0.145 s/op +</code></pre> + +<p>Look at the a20_100 case - instead of impacting start time by 9 seconds, it impacts it by 1 second. + +<ul> +<li>1.8.12 available 20-Oct-2017 +</ul> + +</body> +</html> diff --git a/docs/dist/doc/index.html b/docs/dist/doc/index.html index d600c82b7..7bbe1633c 100644 --- a/docs/dist/doc/index.html +++ b/docs/dist/doc/index.html @@ -138,6 +138,7 @@ <tr> <td>README's </td> <td>Changes and porting guide for AspectJ + <a href="README-1812.html">1.8.10</a>, <a href="README-1811.html">1.8.10</a>, <a href="README-1810.html">1.8.10</a>, <a href="README-189.html">1.8.9</a>, |