Optimized hash-partitioning for 1 partition case. Reduces resolution of frame profiling
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_dev_next@905 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
index 8d244e8..585c7a1 100644
--- a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
+++ b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
@@ -244,13 +244,18 @@
.append("\" width=\"1\" height=\"")
.append(HEIGHT / 2)
.append("\" style=\"fill:rgb(255,0,0);stroke-width:1;stroke:rgb(255,0,0)\"/>\n");
- for (long ft : tp.frameTimes) {
+ for (int l = 0; l < tp.frameTimes.length; ++l) {
+ long ft = tp.frameTimes[l];
+ long ftn = l < tp.frameTimes.length - 1 ? tp.frameTimes[l + 1] : ft;
long taNextTime = ft - minTime;
+ long barWidth = ftn - ft;
buffer.append("<rect x=\"")
.append(taNextTime * width + leftOffset)
.append("\" y=\"")
.append(y * (HEIGHT + 1) + HEIGHT / 4)
- .append("\" width=\"1\" height=\"")
+ .append("\" width=\"")
+ .append(barWidth == 0 ? 1 : (barWidth * width))
+ .append("\" height=\"")
.append(HEIGHT / 2)
.append("\" style=\"fill:rgb(0,255,0);stroke-width:1;stroke:rgb(0,255,0)\"/>\n");
}
diff --git a/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java b/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java
index c7b3bd8..affa01c 100644
--- a/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java
+++ b/hyracks-control-nc/src/main/java/edu/uci/ics/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java
@@ -27,7 +27,7 @@
import edu.uci.ics.hyracks.control.nc.Task;
public class ProfilingPartitionWriterFactory implements IPartitionWriterFactory {
- private static final int N_SAMPLES = 1024;
+ private static final int N_SAMPLES = 64;
private final IHyracksTaskContext ctx;
diff --git a/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java b/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java
index 8d69b95..26bf75b 100644
--- a/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java
+++ b/hyracks-dataflow-common/src/main/java/edu/uci/ics/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java
@@ -39,6 +39,9 @@
return new ITuplePartitionComputer() {
@Override
public int partition(IFrameTupleAccessor accessor, int tIndex, int nParts) {
+ if (nParts == 1) {
+ return 0;
+ }
int h = 0;
int startOffset = accessor.getTupleStartOffset(tIndex);
int slotLength = accessor.getFieldSlotsLength();