Show the performance results in graphs
diff --git a/.gitattributes b/.gitattributes
index d9bd095..65b7d14 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,6 +1,7 @@
* text eol=lf
*.png binary
*.jpg binary
+*.ods binary
# This is a windows-specific file
src/main/resources/log4cxx.rc eol=crlf
diff --git a/src/site/PerformanceGraphs.ods b/src/site/PerformanceGraphs.ods
new file mode 100644
index 0000000..98fa6bc
--- /dev/null
+++ b/src/site/PerformanceGraphs.ods
Binary files differ
diff --git a/src/site/images/performance-all.png b/src/site/images/performance-all.png
new file mode 100644
index 0000000..13e7c25
--- /dev/null
+++ b/src/site/images/performance-all.png
Binary files differ
diff --git a/src/site/images/performance-multithread.png b/src/site/images/performance-multithread.png
new file mode 100644
index 0000000..7552c19
--- /dev/null
+++ b/src/site/images/performance-multithread.png
Binary files differ
diff --git a/src/site/images/performance-singlethread.png b/src/site/images/performance-singlethread.png
new file mode 100644
index 0000000..6555e56
--- /dev/null
+++ b/src/site/images/performance-singlethread.png
Binary files differ
diff --git a/src/site/markdown/performance.md b/src/site/markdown/performance.md
index 2cefd64..8af54af 100644
--- a/src/site/markdown/performance.md
+++ b/src/site/markdown/performance.md
@@ -119,6 +119,12 @@
| Logging int+float using MessageBuffer, JSON/threads:6 | 2110 ns | 6827 ns | 104646 |
| Multiprocess logging int+float using MessageBuffer, pattern: \%d \%m\%n | 3253 ns | 3253 ns | 214839 |
+
+This data is shown in the graph below. The single-threaded tests are shown in blue,
+while the multithreaded tests are shown in orange.
+
+
+
-# The "Appending" benchmarks just format the message (using PatternLayout) then discard the result.
-# The "Async" benchmarks test [AsyncAppender](@ref log4cxx::AsyncAppender) throughput, with logging events discarded in the background thread.
-# The "Logging" benchmarks write to a file using buffered output. Overhead is 2-3 times more when not using buffered output.
@@ -153,4 +159,19 @@
and you cannot use a background thread to format and write the log data,
the LOG4CXX_[level]_FMT series of macros impose the least overhead.
+The graphs below show the detailed performance results. The first graph shows
+multithreaded performance. As shown previously, multithreaded performance
+is generally much lower than single threaded due to locking contention:
+
+
+
+Single thread performance is shown below:
+
+
+
+Note that in both instances, the content of the log message has a significant
+impact on performance. All of the tests shown in these graphs assume that
+the message is actually being logged. If the logger is not enabled, no messages
+are logged and performance is much better.
+
[asynchronous output setting]:configuration-files.html#asynch-output