You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by su...@apache.org on 2022/02/15 18:09:06 UTC
[druid] branch master updated: perf: cache row if it is a transformed row (#12113)
This is an automated email from the ASF dual-hosted git repository.
suneet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 26bc4b7 perf: cache row if it is a transformed row (#12113)
26bc4b7 is described below
commit 26bc4b734597480bf1185559baf7644086f24d52
Author: Jason Koch <jk...@netflix.com>
AuthorDate: Tue Feb 15 10:08:41 2022 -0800
perf: cache row if it is a transformed row (#12113)
* perf: cache row if it is a transformed row
* perf: cache row if it is a transformed row (also cache DateTime object)
---
.../druid/segment/transform/Transformer.java | 27 ++++++++++++++--------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java b/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java
index 78b40f4..7490d15 100644
--- a/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java
+++ b/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java
@@ -146,10 +146,15 @@ public class Transformer
private final InputRow row;
private final Map<String, RowFunction> transforms;
+ // cached column, because it will be read frequently
+ private final DateTime timestamp;
+
public TransformedInputRow(final InputRow row, final Map<String, RowFunction> transforms)
{
this.row = row;
this.transforms = transforms;
+
+ this.timestamp = readTimestampFromRow(row, transforms);
}
@Override
@@ -158,27 +163,29 @@ public class Transformer
return row.getDimensions();
}
- @Override
- public long getTimestampFromEpoch()
+ static DateTime readTimestampFromRow(final InputRow row, final Map<String, RowFunction> transforms)
{
final RowFunction transform = transforms.get(ColumnHolder.TIME_COLUMN_NAME);
+ final long ts;
if (transform != null) {
//noinspection ConstantConditions time column is never null
- return Rows.objectToNumber(ColumnHolder.TIME_COLUMN_NAME, transform.eval(row), true).longValue();
+ ts = Rows.objectToNumber(ColumnHolder.TIME_COLUMN_NAME, transform.eval(row), true).longValue();
} else {
- return row.getTimestampFromEpoch();
+ ts = row.getTimestampFromEpoch();
}
+ return DateTimes.utc(ts);
+ }
+
+ @Override
+ public long getTimestampFromEpoch()
+ {
+ return timestamp.getMillis();
}
@Override
public DateTime getTimestamp()
{
- final RowFunction transform = transforms.get(ColumnHolder.TIME_COLUMN_NAME);
- if (transform != null) {
- return DateTimes.utc(getTimestampFromEpoch());
- } else {
- return row.getTimestamp();
- }
+ return timestamp;
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org