summaryrefslogtreecommitdiff
path: root/silx/math/medianfilter/test/benchmark.py
diff options
context:
space:
mode:
Diffstat (limited to 'silx/math/medianfilter/test/benchmark.py')
-rw-r--r--silx/math/medianfilter/test/benchmark.py122
1 files changed, 0 insertions, 122 deletions
diff --git a/silx/math/medianfilter/test/benchmark.py b/silx/math/medianfilter/test/benchmark.py
deleted file mode 100644
index cbb16b3..0000000
--- a/silx/math/medianfilter/test/benchmark.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-# Copyright (C) 2017-2019 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ############################################################################*/
-"""Tests of the median filter"""
-
-__authors__ = ["H. Payno"]
-__license__ = "MIT"
-__date__ = "02/05/2017"
-
-from silx.gui import qt
-from silx.math.medianfilter import medfilt2d as medfilt2d_silx
-import numpy
-import numpy.random
-from timeit import Timer
-from silx.gui.plot import Plot1D
-import logging
-
-try:
- import scipy
-except:
- scipy = None
-else:
- import scipy.ndimage
-
-try:
- import PyMca5.PyMca as pymca
-except:
- pymca = None
-else:
- from PyMca5.PyMca.median import medfilt2d as medfilt2d_pymca
-
-logger = logging.getLogger(__name__)
-logger.setLevel(logging.INFO)
-
-
-class BenchmarkMedianFilter(object):
- """Simple benchmark of the median fiter silx vs scipy"""
-
- NB_ITER = 3
-
- def __init__(self, imageWidth, kernels):
- self.img = numpy.random.rand(imageWidth, imageWidth)
- self.kernels = kernels
-
- self.run()
-
- def run(self):
- self.execTime = {}
- for kernel in self.kernels:
- self.execTime[kernel] = self.bench(kernel)
-
- def bench(self, width):
- def execSilx():
- medfilt2d_silx(self.img, width)
-
- def execScipy():
- scipy.ndimage.median_filter(input=self.img,
- size=width,
- mode='nearest')
-
- def execPymca():
- medfilt2d_pymca(self.img, width)
-
- execTime = {}
-
- t = Timer(execSilx)
- execTime["silx"] = t.timeit(BenchmarkMedianFilter.NB_ITER)
- logger.info(
- 'exec time silx (kernel size = %s) is %s' % (width, execTime["silx"]))
-
- if scipy is not None:
- t = Timer(execScipy)
- execTime["scipy"] = t.timeit(BenchmarkMedianFilter.NB_ITER)
- logger.info(
- 'exec time scipy (kernel size = %s) is %s' % (width, execTime["scipy"]))
- if pymca is not None:
- t = Timer(execPymca)
- execTime["pymca"] = t.timeit(BenchmarkMedianFilter.NB_ITER)
- logger.info(
- 'exec time pymca (kernel size = %s) is %s' % (width, execTime["pymca"]))
-
- return execTime
-
- def getExecTimeFor(self, id):
- res = []
- for k in self.kernels:
- res.append(self.execTime[k][id])
- return res
-
-
-app = qt.QApplication([])
-kernels = [3, 5, 7, 11, 15]
-benchmark = BenchmarkMedianFilter(imageWidth=1000, kernels=kernels)
-plot = Plot1D()
-plot.addCurve(x=kernels, y=benchmark.getExecTimeFor("silx"), legend='silx')
-if scipy is not None:
- plot.addCurve(x=kernels, y=benchmark.getExecTimeFor("scipy"), legend='scipy')
-if pymca is not None:
- plot.addCurve(x=kernels, y=benchmark.getExecTimeFor("pymca"), legend='pymca')
-plot.show()
-app.exec_()
-del app