Bioformats OME.tiff saving - performance
Posted: Thu Oct 09, 2014 3:28 pm
Hi All,
We are now close to using OME.tiff as acquisition format for OPT, but stumbled on some (quite mysterious) performance issue.
We use recent (5.0.5) "bioformats_package.jar" and BFmatlab to call OME.tiff saving services from Matlab; the procedure is basically a modified "bfsave.m". In its turn, it might be called from LabView acquisition, where it is supposed to be used.
The XY frames are 1191x2559 uint16 images, and we found that it takes 13 seconds to write a frame into OME.tiff on acquisition workstation. This is too slow.
Then we tried the same code on the same data on similar workstation and on a laptop and got 11s, but on several other laptops - 0.34s, 0.65s and 1s. All are Windows machines; we also found that this behaviour didn't depend neither on Matlab version (2013a or 2013b), nor Java (1.6 or 1.7).
To summarize these tests, here is speed per frame -
Win 7 pro, HP workstation = 13s
Win 7 pro, HP workstation = 11s (another one)
Win 8.1 Enterprise, HP laptop = 11s
Win 8.1 Enterprise, HP laptop = 0.34s
Win 8.1 Enterprise, HP laptop = 0.34s (yet another one)
Win 7 Enterprise, - HP laptop = 0.65s
Win 8.1 Enterprise, HP laptop = 1s
There is definitely some clustering.
The line of code that is critical is almost for sure this -
So the question is - is there something that might slow it down, and how to fix it?
For our OPT team, the 0.34s vs 13s difference is really a matter of practical/nonpractical.
Best regards,
Y.
We are now close to using OME.tiff as acquisition format for OPT, but stumbled on some (quite mysterious) performance issue.
We use recent (5.0.5) "bioformats_package.jar" and BFmatlab to call OME.tiff saving services from Matlab; the procedure is basically a modified "bfsave.m". In its turn, it might be called from LabView acquisition, where it is supposed to be used.
The XY frames are 1191x2559 uint16 images, and we found that it takes 13 seconds to write a frame into OME.tiff on acquisition workstation. This is too slow.
Then we tried the same code on the same data on similar workstation and on a laptop and got 11s, but on several other laptops - 0.34s, 0.65s and 1s. All are Windows machines; we also found that this behaviour didn't depend neither on Matlab version (2013a or 2013b), nor Java (1.6 or 1.7).
To summarize these tests, here is speed per frame -
Win 7 pro, HP workstation = 13s
Win 7 pro, HP workstation = 11s (another one)
Win 8.1 Enterprise, HP laptop = 11s
Win 8.1 Enterprise, HP laptop = 0.34s
Win 8.1 Enterprise, HP laptop = 0.34s (yet another one)
Win 7 Enterprise, - HP laptop = 0.65s
Win 8.1 Enterprise, HP laptop = 1s
There is definitely some clustering.
The line of code that is critical is almost for sure this -
- Code: Select all
writer.saveBytes(index-1, getBytes(I));
So the question is - is there something that might slow it down, and how to fix it?
For our OPT team, the 0.34s vs 13s difference is really a matter of practical/nonpractical.
Best regards,
Y.