From 9b770f74cb58899eabcc938d88457dc093ada146 Mon Sep 17 00:00:00 2001
From: Tobias Pietzsch <tobias.pietzsch@gmail.com>
Date: Tue, 25 Feb 2014 19:13:17 +0100
Subject: [PATCH] do not allocate new arrays for reordering hdf5 dimensions.

---
 .../java/bdv/img/hdf5/Hdf5VolatileShortArrayLoader.java   | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/main/java/bdv/img/hdf5/Hdf5VolatileShortArrayLoader.java b/src/main/java/bdv/img/hdf5/Hdf5VolatileShortArrayLoader.java
index e183965a..07eee2dc 100644
--- a/src/main/java/bdv/img/hdf5/Hdf5VolatileShortArrayLoader.java
+++ b/src/main/java/bdv/img/hdf5/Hdf5VolatileShortArrayLoader.java
@@ -45,6 +45,10 @@ public class Hdf5VolatileShortArrayLoader implements CacheArrayLoader< VolatileS
 
 	public static volatile long sLoad = 0;
 
+	private final int[] reorderedDimensions = new int[ 3 ];
+
+	private final long[] reorderedMin = new long[ 3 ];
+
 	@Override
 	public VolatileShortArray loadArray( final int timepoint, final int setup, final int level, final int[] dimensions, final long[] min )
 	{
@@ -66,7 +70,9 @@ public class Hdf5VolatileShortArrayLoader implements CacheArrayLoader< VolatileS
 //				log.println( sw.toString() );
 			}
 			final long t0 = System.currentTimeMillis();
-			array = hdf5Reader.readShortMDArrayBlockWithOffset( getCellsPath( timepoint, setup, level ), reorder( dimensions ), reorder( min ) );
+			reorder( dimensions, reorderedDimensions );
+			reorder( min, reorderedMin );
+			array = hdf5Reader.readShortMDArrayBlockWithOffset( getCellsPath( timepoint, setup, level ), reorderedDimensions, reorderedMin );
 			pEnd = System.currentTimeMillis();
 			final long t = pEnd - t0;
 			final long size = array.size();
-- 
GitLab