Skip to content
Snippets Groups Projects
Commit 32933260 authored by Martin Lange's avatar Martin Lange
Browse files

add benchmark for push & pull, make a separate group for slower tool functions

parent b4d878ed
No related branches found
No related tags found
1 merge request!209Add more benchmarks
Pipeline #132051 passed with stages
in 3 minutes and 27 seconds
......@@ -4,4 +4,18 @@
### Tools
Functions in `data/tools`:
![tools](https://git.ufz.de/FINAM/finam/-/jobs/artifacts/main/raw/bench/bench-data-tools.svg?job=benchmark)
Functions in `data/tools` with longer run time:
![tools-slow](https://git.ufz.de/FINAM/finam/-/jobs/artifacts/main/raw/bench/bench-data-tools-slow.svg?job=benchmark)
## SDK
### Push & pull
Push & pull using numpy arrays:
![tools](https://git.ufz.de/FINAM/finam/-/jobs/artifacts/main/raw/bench/bench-sdk-io.svg?job=benchmark)
......@@ -81,19 +81,19 @@ class TestFull(unittest.TestCase):
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
_result = self.benchmark(full, value=0.0, name="test", info=info, time=time)
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
_result = self.benchmark(full, value=0.0, name="test", info=info, time=time)
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
......@@ -105,21 +105,21 @@ class TestFullLike(unittest.TestCase):
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_like_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, "test", info, time)
_result = self.benchmark(full_like, xdata=xdata, value=0.0)
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_like_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, "test", info, time)
_result = self.benchmark(full_like, xdata=xdata, value=0.0)
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_full_like_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
......@@ -181,21 +181,21 @@ class TestUnitsTools(unittest.TestCase):
xdata = full(0.0, "test", info, time)
_result = self.benchmark(get_units, xdata=xdata)
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_to_units_01_2x1(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
xdata = full(0.0, "test", info, time)
_result = self.benchmark(to_units, xdata=xdata, units="in")
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_to_units_02_512x256(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((512, 256)), units="m")
xdata = full(0.0, "test", info, time)
_result = self.benchmark(to_units, xdata=xdata, units="in")
@pytest.mark.benchmark(group="data-tools")
@pytest.mark.benchmark(group="data-tools-slow")
def test_to_units_03_2048x1024(self):
time = dt.datetime(2000, 1, 1)
info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
......
import datetime as dt
import unittest
import pytest
import finam as fm
class TestPushPull(unittest.TestCase):
@pytest.fixture(autouse=True)
def setupBenchmark(self, benchmark):
self.benchmark = benchmark
def push_pull(self):
self.out.push_data(self.data, self.time)
_ = self.inp.pull_data(self.time)
self.time += dt.timedelta(days=1)
def setup_link(self, grid):
self.time = dt.datetime(2000, 1, 1)
info = fm.Info(time=self.time, grid=grid, units="m")
self.data = fm.data.strip_data(fm.data.full(0.0, "test", info, self.time))
self.out = fm.Output(name="Output")
self.inp = fm.Input(name="Input")
self.out >> self.inp
self.inp.ping()
self.out.push_info(info)
self.inp.exchange_info(info)
@pytest.mark.benchmark(group="sdk-io")
def test_push_pull_np_01_2x1(self):
grid = fm.UniformGrid((2, 1))
self.setup_link(grid)
self.benchmark(self.push_pull)
@pytest.mark.benchmark(group="sdk-io")
def test_push_pull_np_02_512x256(self):
grid = fm.UniformGrid((512, 256))
self.setup_link(grid)
self.benchmark(self.push_pull)
@pytest.mark.benchmark(group="sdk-io")
def test_push_pull_np_03_2048x1024(self):
grid = fm.UniformGrid((2048, 1024))
self.setup_link(grid)
self.benchmark(self.push_pull)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment