VisibleMemberMap.java possible performance improvements
Jonathan Gibbons
jonathan.gibbons at oracle.com
Thu Sep 19 10:46:55 PDT 2013
On 09/19/2013 10:00 AM, Michael Simacek wrote:
> Hi,
>
> I thought about improving performance of the default doclet implementation a bit.
> According to profiler results, most of the CPU time is spent in constructing the member map in VisibleMemberMap.java.
> So I've rewritten part of the VisbleMemberMap and reduced the javadoc run time to 60-70% of original run time (on large inputs).
>
> Is there any chance of this patch (attached) being accepted into OpenJDK?
> I've never made any contribution to OpenJDK before, so I would like to ask for code review and guidance through the contribution process.
>
> Michael
>
Michael,
Just from the description, this sounds interesting.
There are two criteria for a change like this:
-- the obvious one -- do all the javadoc regression tests pass. These
are the tests
langtools/test/com/sun/javadoc
langtools/test/tools/javadoc
-- does the change affect the generated docs. Unfortunately, you cannot
trivially use comparison tools (like diff) to compare the output,
because of various date stamps within the generated docs. Changing the
makefiles to disable the date stamps is not a solution either, because
of timestamps in other artifacts generated during the build (corba
files.) My personal solution is to use a script (attached) to scrub
time and date stamps from generated docs. Run this script on a
directory such as the generated docs directory and it will remove any
timestamp info using "sed --in-place". Once you have done that you
can use tools like diff and meld to compare the generated docs before
and after applying your patch.
-- Jon
-------------- next part --------------
#!/bin/sh
# Remove timestamps from html files generated by javadoc.
# This includes timestamps generated by javadoc itself,
# and timestamps propogated from the javadoc comments.
for file in $(find $1 -name \*.html | xargs -n 1 grep --files-with-matches "Generated by javadoc" ) ; do
sed --in-place \
-e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \
-e 's/\(<meta name="date" content="\).*\(">\)/\1(removed)\2/' \
-e 's/\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\), [A-Z][a-z]* [0-9][0-9]*, [12][0-9]* [0-9][0-9:]* \(AM\|PM\) PDT/(removed)/' \
$file
done
More information about the javadoc-dev
mailing list