|
@@ -1,3 +1,5 @@ |
|
|
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
|
|
|
|
import nilmdb |
|
|
import nilmdb |
|
|
|
|
|
|
|
|
from nilmdb.printf import * |
|
|
from nilmdb.printf import * |
|
@@ -205,6 +207,41 @@ class TestLayouts(object): |
|
|
do_roundtrip(name_rawnotch, datagen) |
|
|
do_roundtrip(name_rawnotch, datagen) |
|
|
|
|
|
|
|
|
class TestLayoutSpeed: |
|
|
class TestLayoutSpeed: |
|
|
@unittest.skip("this is slow") |
|
|
|
|
|
|
|
|
#@unittest.skip("this is slow") |
|
|
def test_layout_speed(self): |
|
|
def test_layout_speed(self): |
|
|
pass |
|
|
|
|
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
|
|
random.seed(54321) |
|
|
|
|
|
|
|
|
|
|
|
def do_speedtest(layout, datagen, rows = 5000, times = 100): |
|
|
|
|
|
# Build data once |
|
|
|
|
|
data = "" |
|
|
|
|
|
ts = 1234567890 |
|
|
|
|
|
for r in range(rows): |
|
|
|
|
|
ts += random.uniform(0,1) |
|
|
|
|
|
row = sprintf("%f", ts) + " " |
|
|
|
|
|
row += " ".join(datagen()) |
|
|
|
|
|
row += "\n" |
|
|
|
|
|
data += row |
|
|
|
|
|
|
|
|
|
|
|
# Do lots of roundtrips |
|
|
|
|
|
start = time.time() |
|
|
|
|
|
for i in range(times): |
|
|
|
|
|
parser = Parser(layout) |
|
|
|
|
|
formatter = Formatter(layout) |
|
|
|
|
|
parser.parse(data) |
|
|
|
|
|
data = formatter.format(parser.data) |
|
|
|
|
|
elapsed = int((time.time() - start) * 1000) |
|
|
|
|
|
printf("roundtrip %s: %d ms, %.1f μs/row\n", |
|
|
|
|
|
layout, elapsed, (1000.0 * elapsed) / (rows * times)) |
|
|
|
|
|
|
|
|
|
|
|
print "" |
|
|
|
|
|
def datagen(): |
|
|
|
|
|
return [ sprintf("%f", random.uniform(-1000,1000)) |
|
|
|
|
|
for x in range(10) ] |
|
|
|
|
|
do_speedtest("float32_10", datagen) |
|
|
|
|
|
|
|
|
|
|
|
def datagen(): |
|
|
|
|
|
return [ sprintf("%d", random.randint(0,65535)) |
|
|
|
|
|
for x in range(10) ] |
|
|
|
|
|
do_speedtest("uint16_10", datagen) |