Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplayTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplayTest.java	(revision 17832)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplayTest.java	(revision 17834)
@@ -5,9 +5,17 @@
 
 import java.awt.Dimension;
+import java.awt.Graphics2D;
 import java.awt.Rectangle;
+import java.awt.image.BufferedImage;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.gui.layer.geoimage.ImageDisplay.VisRect;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -43,3 +51,22 @@
                 ImageDisplay.calculateDrawImageRectangle(new VisRect(0, 0, 10, 5), new Dimension(8, 6)));
     }
+
+    /**
+     * Performance test for {@link ImageDisplay.LoadImageRunnable}
+     * @throws Exception if any error occurs
+     */
+    @Test
+    @Disabled("Set working directory to image folder and run manually")
+    void testLoadImageRunnablePerformance() throws Exception {
+        ImageDisplay imageDisplay = new ImageDisplay(new ImageryFilterSettings());
+        imageDisplay.setSize(640, 480);
+        Graphics2D graphics = new BufferedImage(640, 480, BufferedImage.TYPE_INT_RGB).createGraphics();
+        try (DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(".").toAbsolutePath(), "*.{JPG,jpg}")) {
+            for (Path p : stream) {
+                Runnable loadImage = imageDisplay.setImage0(new ImageEntry(p.toFile()));
+                loadImage.run();
+                imageDisplay.paintComponent(graphics);
+            }
+        }
+    }
 }
