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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]