Commit Graph

118 Commits

Author SHA1 Message Date
d411de0816 Merge branch 'master' of https://bitbucket.com/andreashuber/performance 2021-04-05 14:38:09 +02:00
a1b4c7006d add percentile information if available 2021-04-02 18:29:18 +02:00
e410bcb3b3 revert accidential commit 2021-03-29 15:48:08 +02:00
45c1648773 POC for detailed gallery view 2020-10-18 19:25:53 +02:00
598ee31c1d Merge branch 'master' of https://andreashuber@bitbucket.org/andreashuber/performance.git 2020-09-28 10:01:20 +00:00
91c78d4350 use transparent color for parallel request plots 2020-09-28 10:00:51 +00:00
d21ef48559 make tic labels optional for bar charts 2020-09-27 20:07:26 +02:00
439bf0b05b reduce log level 2020-09-27 08:21:37 +02:00
bfc5d9e3d8 hide grid for certain plot types 2020-04-17 14:46:42 +00:00
9a311313ec use US locale to format strings
This is especially important for all strings that are
passed to gnuplot. Because gnuplot uses the US locale
during parsing.
2020-03-12 19:40:20 +01:00
a1c6dd06a3 fix axis labels when x2 axis is used 2020-02-15 08:43:31 +01:00
57d016245c use y1/y2 axis definitions 2020-02-09 20:14:13 +01:00
859491e99e put y axis definition into its own object 2020-02-09 17:16:27 +01:00
ed7cc9bee5 put y axis definition into its own object 2020-02-08 15:39:41 +01:00
3cb7ec434f add labels to bar chart 2020-01-26 12:58:37 +01:00
459c659f85 use inline data for bar charts
Bar charts only need very little data. There is no need to create
a file for two numbers.
2020-01-19 13:15:44 +01:00
99e57cda24 change color pallette to better show distinctive colors
The old method of creating brighter/darker colors was producing color
shades that did not look like the same color. E.g. a darker yellow
looked more like brown.
I am now trying to use hand crafted shades.
2020-01-19 12:46:16 +01:00
cf7e5ec968 add bar charts 2020-01-19 10:35:07 +01:00
19e6dd1102 add histogram plots 2019-12-27 12:25:25 +01:00
4e1b7a46d8 fix x-axis labels overlap when zooming out
The x-axis labels overlapped when zooming out too far.
Fixed by increasing the step size and reducint the labels to
year only.
2019-11-30 08:44:29 +01:00
06b379494f apply new code formatter and save action 2019-11-24 10:20:43 +01:00
e2a33ac6e2 make the code that determines which axis to use explicit
In the previous changeset the code that determined
which axis the plots used was implemented as a
side effect of getting the Gnuplot definition of
an axis.
Changed that to an explit update call with simpler
logic.
2019-11-24 09:08:36 +01:00
892d5a6d08 automatically determine which axis a plot needs 2019-11-24 08:18:52 +01:00
3048f67e9a cleanup 2019-11-23 19:12:23 +01:00
1cc39e3962 create y-axis settings in aggregate handlers 2019-11-23 18:40:31 +01:00
82a961dbaf move definition of x-axis to the aggregate handlers 2019-11-23 14:28:18 +01:00
5341b5e307 change color palette so that the first color is blue
The color scheme for the page is blue/grey, so it makes
sense to use blue as the main color for plots.
2019-11-17 19:36:48 +01:00
57c5cca688 fetch possible values for gallery view 2019-11-14 18:45:32 +01:00
0fb7a0aaf6 fix image creation for automatic y-range 2019-11-10 14:22:22 +01:00
c83d0a3e1e fix overlapping x axis ticks
Gnuplot does not handle long x-axis ticks very good.
It should know how wide the labels are and could adapt
the increment size accordingly, but it doesn't.
Fixed by explicitly defining the increment for x-axis
labels.
2019-11-01 19:13:11 +01:00
7c122b5753 cleanup 2019-11-01 17:45:19 +01:00
3303afd115 render images without any data on it instead of throwing errors
This makes it easier to use the mouse wheel
to zoom in. Without it you could zoom into
a region that had not data and then had to
use the date picker to change the date.
2019-10-31 19:30:29 +01:00
f28a67a5c1 make it possible to render any combination of plots 2019-10-20 10:16:25 +02:00
b7c4fe4c1f move scatter plot creation into an AggregateHandler 2019-10-20 08:11:09 +02:00
7c61686808 merge ScatterPlot into Plotter 2019-10-19 19:03:33 +02:00
d895eba47c remove duplicate values when rendering
Rendering plots with millions of values is expensive. Before this fix
we wrote all values into CSV files. The CSV files were then read by
Gnuplot that did the rendering. But in an image with n×m pixes there
can only be nm different values. In most realistic scenarios we will
have many values that will be drawn to the same pixels. So we are
wasting time yb first generation the CSV for too many values and then
by parsing that CSV again.
Fixed by using a sparse 2D array to de-duplicate many values before
they get written to the CSV. The additional time we spend de-duplicating
is often smaller than the time saved when writing the CSV, so that the
total CSV writing is about as 'fast' as before (sometimes a little
faster, sometimes a little slower). But the time Gnuplot needs for
rendering drastically reduces. The factor depends on the data, of
course. We have seen factor 50 for realistic examples. Making a 15s
job run in 300ms.
2019-09-29 18:57:57 +02:00
242c83e590 extract constants for gnuplot margins in px 2019-09-08 08:34:14 +02:00
0e9e2cd53a remove dependency to Guava 2019-09-01 15:44:36 +02:00
a174ec21ad increase contrast between scatter and cumulative distribution 2019-08-26 20:38:57 +02:00
79c28f2f9e hide tics in gallery view 2019-08-25 18:56:08 +02:00
4f61d91c79 draw tic for max value on y-axis only if it makes sense 2019-08-25 15:40:20 +02:00
5b57417f75 make the tics on the y-axis easier readable
People are having trouble to understand durations like
100000 or 2.7E+6 milliseconds. Therefore we are
hanging the labels on the y-axis to include the unit
in the tic's label. We also use multiples of seconds,
minutes, hours and days instead of multiples of 10.
2019-08-25 10:25:47 +02:00
4f57a29c3b increase cache of stringified longs
This should improve the csv generation a little bit.
2019-05-25 17:55:14 +02:00
59aea1a15f introduce index clustering (part 1)
In order to prevent files from getting too big and
make it easier to implement retention policies, we
are splitting all files into chunks. Each chunk
contains the data for a time interval (1 month per
default).
This first changeset introduces the ClusteredPersistentMap
that implements this for PersistentMap. It is used
for a couple (not all) of indices.
2019-02-24 16:50:57 +01:00
24fcfd7763 prepare the addition of a date index 2018-09-28 19:07:01 +02:00
a2e63cca44 cleanup 2018-09-13 08:11:15 +02:00
1182d76205 replace the FolderStorage with DiskStorage
- The DiskStorage uses only one file instead of millions.
  Also the block size is only 512 byte instead of 4kb, which
  helps to reduce the memory usage for short sequences.
- Update primitiveCollections to get the new LongList.range
  and LongList.rangeClosed methods.
- BSFile now stores Time&Value sequences and knows how to
  encode the time values with delta encoding.
- Doc had to do some magic tricks to save memory. The path
  was initialized lazy and stored as byte array. This is no
  longer necessary. The patch was replaced by the
  rootBlockNumber of the BSFile.
- Had to temporarily disable the 'in' queries.
- The stored values are now processed as stream of LongLists
  instead of Entry. The overhead for creating Entries is
  gone, so is the memory overhead, because Entry was an
  object and had a reference to the tags, which is
  unnecessary.
2018-09-12 09:35:07 +02:00
c1974d21b2 replace startDate + dateRange with start and end date
The new datetimepicker can be used to specify date ranges. We no longer
need to define a start date and a range. This simplifies the code
for zooming and shifting considerably.
2018-08-11 17:45:20 +02:00
14d9216e40 create margins with constant size
With this we will be able to zoom in by selecting a region. The constant
margins allow us to determine the exact timestampt for a pixel position.
2018-08-10 09:56:57 +02:00
786570503a make plot for parallel requests easier to digest
1. draw it below the scatter plot, so that you can see both
2. make the color lighter, so that you can see both
2018-08-10 09:27:19 +02:00