/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.timeseries;
import org.testng.annotations.Test;
import org.threeten.bp.LocalDate;
import com.opengamma.timeseries.date.localdate.ImmutableLocalDateDoubleTimeSeries;
/**
* Test to check performance.
*/
@Test(enabled = false)
public class TimeSeriesPerformanceTest {
private static final int SMALL = 10;
private static final int BIG = 10_000;
public void test_addSimple_small() {
for (int i = 0; i < 5; i++) {
addSimple(SMALL, "addSimple-small");
}
}
public void test_addSimple_big() {
for (int i = 0; i < 5; i++) {
addSimple(BIG, "addSimple-big");
}
}
void addSimple(int size, String name) {
int loop = 10_000_000 / size;
LocalDate base = LocalDate.now().minusYears(2);
LocalDate[] dates = new LocalDate[size];
double[] values = new double[size];
for (int i = 0; i < size; i++) {
dates[i] = base.plusDays(i);
values[i] = i * 1.2d;
}
DoubleTimeSeries<LocalDate> ts = ImmutableLocalDateDoubleTimeSeries.of(dates, values);
long start = System.nanoTime();
for (int j = 0; j < loop; j++) {
ts = ts.add(1.5d);
}
long end = System.nanoTime();
double diff = (((double) end) - ((double) start)) / 1_000_000L;
System.out.println(diff + " " + ts.getEarliestValue() + " " + name);
}
//-------------------------------------------------------------------------
public void test_addSeries_small() {
for (int i = 0; i < 5; i++) {
addSeries(SMALL, "addSeries-small");
}
}
public void test_addSeries_big() {
for (int i = 0; i < 5; i++) {
addSeries(BIG, "addSeries-big");
}
}
void addSeries(int size, String name) {
int loop = 10_000_000 / size;
LocalDate base = LocalDate.now().minusYears(2);
LocalDate[] dates1 = new LocalDate[size];
double[] values1 = new double[size];
LocalDate[] dates2 = new LocalDate[size];
double[] values2 = new double[size];
for (int i = 0; i < size; i++) {
dates1[i] = base.plusDays(i);
values1[i] = i * 1.2d;
dates2[i] = base.plusDays(i);
values2[i] = i * 1.5d;
}
DoubleTimeSeries<LocalDate> ts1 = ImmutableLocalDateDoubleTimeSeries.of(dates1, values1);
DoubleTimeSeries<LocalDate> ts2 = ImmutableLocalDateDoubleTimeSeries.of(dates2, values2);
long start = System.nanoTime();
for (int j = 0; j < loop; j++) {
ts1 = ts1.add(ts2);
}
long end = System.nanoTime();
double diff = (((double) end) - ((double) start)) / 1_000_000L;
System.out.println(diff + " " + ts1.getEarliestValue() + " " + name);
}
//-------------------------------------------------------------------------
public void test_multiplySeries_small() {
for (int i = 0; i < 5; i++) {
multiplySeries(SMALL, "multiplySeries-small");
}
}
public void test_multiplySeries_big() {
for (int i = 0; i < 5; i++) {
multiplySeries(BIG, "multiplySeries-big");
}
}
void multiplySeries(int size, String name) {
int loop = 10_000_000 / size;
LocalDate base = LocalDate.now().minusYears(2);
LocalDate[] dates1 = new LocalDate[size];
double[] values1 = new double[size];
LocalDate[] dates2 = new LocalDate[size];
double[] values2 = new double[size];
for (int i = 0; i < size; i++) {
dates1[i] = base.plusDays(i);
values1[i] = i * 1.2d;
dates2[i] = base.plusDays(i);
values2[i] = i * 1.5d;
}
DoubleTimeSeries<LocalDate> ts1 = ImmutableLocalDateDoubleTimeSeries.of(dates1, values1);
DoubleTimeSeries<LocalDate> ts2 = ImmutableLocalDateDoubleTimeSeries.of(dates2, values2);
long start = System.nanoTime();
for (int j = 0; j < loop; j++) {
ts1 = ts1.multiply(ts2);
}
long end = System.nanoTime();
double diff = (((double) end) - ((double) start)) / 1_000_000L;
System.out.println(diff + " " + ts1.getEarliestValue() + " " + name);
}
//-------------------------------------------------------------------------
public void test_reciprocal_small() {
for (int i = 0; i < 5; i++) {
multiplySeries(SMALL, "reciprocal-small");
}
}
public void test_reciprocal_big() {
for (int i = 0; i < 5; i++) {
multiplySeries(BIG, "reciprocal-big");
}
}
void reciprocal(int size, String name) {
int loop = 10_000_000 / size;
LocalDate base = LocalDate.now().minusYears(2);
LocalDate[] dates = new LocalDate[size];
double[] values = new double[size];
for (int i = 0; i < size; i++) {
dates[i] = base.plusDays(i);
values[i] = i * 1.2d;
}
DoubleTimeSeries<LocalDate> ts = ImmutableLocalDateDoubleTimeSeries.of(dates, values);
long start = System.nanoTime();
for (int j = 0; j < loop; j++) {
ts = ts.reciprocal();
}
long end = System.nanoTime();
double diff = (((double) end) - ((double) start)) / 1_000_000L;
System.out.println(diff + " " + ts.getEarliestValue() + " " + name);
}
}