Skip to content

Commit

Permalink
Add BIGINT benchmark for projection
Browse files Browse the repository at this point in the history
  • Loading branch information
Ying Su authored and mbasmanova committed Oct 2, 2020
1 parent 3a44824 commit 6ff3052
Showing 1 changed file with 31 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import static com.facebook.presto.common.function.OperatorType.LESS_THAN;
import static com.facebook.presto.common.function.OperatorType.LESS_THAN_OR_EQUAL;
import static com.facebook.presto.common.function.OperatorType.MULTIPLY;
import static com.facebook.presto.common.type.BigintType.BIGINT;
import static com.facebook.presto.common.type.BooleanType.BOOLEAN;
import static com.facebook.presto.common.type.DateType.DATE;
import static com.facebook.presto.common.type.DoubleType.DOUBLE;
Expand Down Expand Up @@ -120,6 +121,8 @@ public static class BenchmarkData
private static final int DISCOUNT = 1;
private static final int SHIP_DATE = 2;
private static final int QUANTITY = 3;
private static final int EXTENDED_PRICE_IN_CENTS = 4;
private static final int DISCOUNT_PERCENT = 5;

private static final Slice MIN_SHIP_DATE = utf8Slice("1994-01-01");
private static final Slice MAX_SHIP_DATE = utf8Slice("1995-01-01");
Expand All @@ -134,6 +137,10 @@ public static class BenchmarkData
@Param({"true", "false"})
private boolean filterAlwaysFails;

@SuppressWarnings("unused")
@Param({"BIGINT", "DOUBLE"})
private String projectionDataType = "DOUBLE";

@Setup
public void setup()
{
Expand All @@ -147,7 +154,7 @@ public void setup()

private static Page createInputPage()
{
PageBuilder pageBuilder = new PageBuilder(ImmutableList.of(DOUBLE, DOUBLE, VARCHAR, DOUBLE));
PageBuilder pageBuilder = new PageBuilder(ImmutableList.of(DOUBLE, DOUBLE, VARCHAR, DOUBLE, BIGINT, BIGINT));
LineItemGenerator lineItemGenerator = new LineItemGenerator(1, 1, 1);
Iterator<LineItem> iterator = lineItemGenerator.iterator();
for (int i = 0; i < 10_000; i++) {
Expand All @@ -158,6 +165,8 @@ private static Page createInputPage()
DOUBLE.writeDouble(pageBuilder.getBlockBuilder(DISCOUNT), lineItem.getDiscount());
DATE.writeLong(pageBuilder.getBlockBuilder(SHIP_DATE), lineItem.getShipDate());
DOUBLE.writeDouble(pageBuilder.getBlockBuilder(QUANTITY), lineItem.getQuantity());
BIGINT.writeLong(pageBuilder.getBlockBuilder(EXTENDED_PRICE_IN_CENTS), lineItem.getExtendedPriceInCents());
BIGINT.writeLong(pageBuilder.getBlockBuilder(DISCOUNT_PERCENT), lineItem.getDiscountPercent());
}
return pageBuilder.build();
}
Expand Down Expand Up @@ -213,14 +222,28 @@ private final RowExpression createFilterExpression(FunctionManager functionManag
constant(24.0, DOUBLE))))));
}

private static final RowExpression createProjectExpression(FunctionManager functionManager)
private final RowExpression createProjectExpression(FunctionManager functionManager)
{
return call(
MULTIPLY.name(),
functionManager.resolveOperator(MULTIPLY, fromTypes(DOUBLE, DOUBLE)),
DOUBLE,
field(EXTENDED_PRICE, DOUBLE),
field(DISCOUNT, DOUBLE));
switch (projectionDataType) {
case "BIGINT":
return call(
MULTIPLY.name(),
functionManager.resolveOperator(MULTIPLY, fromTypes(BIGINT, BIGINT)),
BIGINT,
field(EXTENDED_PRICE_IN_CENTS, BIGINT),
field(DISCOUNT_PERCENT, BIGINT));

case "DOUBLE":
return call(
MULTIPLY.name(),
functionManager.resolveOperator(MULTIPLY, fromTypes(DOUBLE, DOUBLE)),
DOUBLE,
field(EXTENDED_PRICE, DOUBLE),
field(DISCOUNT, DOUBLE));

default:
return null;
}
}

private final class Tpch1FilterAndProject
Expand Down

0 comments on commit 6ff3052

Please sign in to comment.