Tile-images file-formats
In jadice web toolkit for displaying documents, the backend renders Tiles as images that can be displayed in the Browser. The details are described in the documentation.
This page is intended to give an overview of the different options for generating the Tiles when it comes to file-size, memory consumption and response time.
Overview
Tile compression type | Description | Details |
|---|---|---|
IMAGEIO | former default | If in doubt, use this, it always works |
IMAGEIO_NO_STREAM | same as above but does not use streaming | If you experience problems with Tomcat ( |
PNGJ_BEST_COMPRESSION | 90% compression level |
|
PNGJ_BEST_SPEED | 10% compression level | relatively fast but big file-size |
WEBP_LOSSY | default, 60% compression quality | fastest and smallest file-size but lossy and relatively high memory consumption |
WEBP_LOSSLESS |
| lossless and still small file-size |
WEBP_LOSSY_HIGH_QUALITY | 78% compression quality | lossy, good compromise between file-size, speed and memory consumption |
|
|
|
Details
Test setup
JMeter 5.3
20 Threads
Ramp-up 15s
50 loops
Tomcat 9.0.40
Java
openjdk version "11.0.9.1" 2020-11-04OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)jadice web toolkit 5.10.6.1
Docker Image: tomcat:9.0.40-jdk11-adoptopenjdk-hotspot
Docker command:
docker run -p 8080:8080 -p 9010:9010 -m 3072m --cpus=4 jwt-tomcat119010 used for JMX monitoring
Jadice.properties:
jadice.viewer.cache.sizeHighwaterMarkPercent=25jadice.viewer.cache.maxNumberOfCacheEntries=3000jadice.viewer.cache.maximumExpiryObjectCountRatio=10jadice.viewer.cache.maxAgeExpiryEnabled=truejadice.viewer.cache.maxAge=30jadice.viewer.cache.maxAge.timeUnit=MINUTESTile-Caching disabled
Test 1
Scenario
These results were performed on the same machine so the response time can be considered as "render time" since the transfer doesn't traverse over an actual network
Test result
Tile compression type | Description | Samples | Response time | Heap | File-size | ||||
|---|---|---|---|---|---|---|---|---|---|
|
|
| Average | Min | Max | Max | Peak Size |
| Average bytes |
IMAGEIO | former default | 1000 | 1324 | 72 | 5650 | 805.306.368 | 551.550.976 | 287.472 | |
IMAGEIO_NO_STREAM | same as above but does not use streaming | 1000 | 1633 | 81 | 8897 | 805.306.368 | 379.584.512 | 287.472 | |
PNGJ_BEST_COMPRESSION | 90% compression level | 1000 | 2587 | 392 | 6660 | 805.306.368 | 480.247.808 | 279.347 | |
PNGJ_BEST_SPEED | 10% compression level | 1000 | 1215 | 43 | 6100 | 805.306.368 | 402.653.184 | 320.218 | |
WEBP_LOSSY | default, 60% compression quality | 1000 | 954 | 83 | 20015 | 805.306.368 | 805.306.368 | 121.205 | |
WEBP_LOSSLESS |
| 1000 | 1724 | 174 | 6576 | 805.306.368 | 460.324.864 | 156.564 | |
WEBP_LOSSY_HIGH_QUALITY | 78% compression quality | 1000 | 1558 | 278 | 6498 | 805.306.368 | 530.579.456 | 140.674 | |
|
|
| less is better | less is better | less is better | less is better | less is better |
| less is better |
Test 2
Scenario
The application was accessed via the internet with the following connection types:
Client (JMeter): Fibrechannel 1GBit/s download 1GBit/s upload
Host: Coax 1GBit/s download 50MBit/s upload
average ping to host: 32ms
hops to host: 11
Test result
Tile compression type | Description | Samples | Response time | ||
|---|---|---|---|---|---|
|
|
| Average | Min | Max |
IMAGEIO | former default | 1000 | 1825 | 460 | 8401 |
IMAGEIO_NO_STREAM | same as above but does not use streaming | 1000 | 2216 | 349 | 24595 |
PNGJ_BEST_COMPRESSION | 90% compression level | 1000 | 3793 | 524 | 11092 |
PNGJ_BEST_SPEED | 10% compression level | 1000 | 1634 | 354 | 8317 |
WEBP_LOSSY | default, 60% compression quality | 1000 | 1131 | 236 | 11290 |
WEBP_LOSSLESS |
| 1000 | 2227 | 501 | 8749 |
WEBP_LOSSY_HIGH_QUALITY | 78% compression quality | not tested | not tested | not tested | not tested |
|
|
| less is better | less is better | less is better |