Timings are now written to the file
This commit is contained in:
@@ -8,32 +8,38 @@ public class ThreadTimings {
|
|||||||
private int threadId;
|
private int threadId;
|
||||||
private Stack<Timings> stack = new Stack<>();
|
private Stack<Timings> stack = new Stack<>();
|
||||||
|
|
||||||
public Stack<Timings> getStack() {
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ThreadTimings() {
|
public ThreadTimings() {
|
||||||
this.threadId = IDS.getAndIncrement();
|
this.threadId = IDS.getAndIncrement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Stack<Timings> getStack() {
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
public int getThreadId() {
|
public int getThreadId() {
|
||||||
return threadId;
|
return threadId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Timings start() {
|
public Timings start() {
|
||||||
Timings timings = new Timings(this, stack.size());
|
Timings timings = new Timings(this, stack.size());
|
||||||
Timings.getTimingsManager().waitForTimingsInitialize();
|
getTimingsManager().waitForTimingsInitialize();
|
||||||
stack.push(timings);
|
stack.push(timings);
|
||||||
|
getTimingsManager().notifyTimings(this, timings, true);
|
||||||
return timings;
|
return timings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private TimingsManager getTimingsManager() {
|
||||||
|
return Timings.getTimingsManager();
|
||||||
|
}
|
||||||
|
|
||||||
public void end(Timings finished) {
|
public void end(Timings finished) {
|
||||||
Timings timings = null;
|
Timings timings = null;
|
||||||
while (!stack.isEmpty() && timings != finished) {
|
while (!stack.isEmpty() && timings != finished) {
|
||||||
Timings.getTimingsManager().waitForTimingsInitialize();
|
getTimingsManager().waitForTimingsInitialize();
|
||||||
timings = stack.pop();
|
timings = stack.pop();
|
||||||
if (!timings.hasFinished())
|
if (!timings.hasFinished())
|
||||||
timings.finish();
|
timings.finish();
|
||||||
|
getTimingsManager().notifyTimings(this, timings, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,13 +90,19 @@ public class TimingsManager {
|
|||||||
writer = null;
|
writer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
void addToQueue(TimingsRecord record) {
|
void notifyTimings(ThreadTimings thread, Timings timings, boolean start) {
|
||||||
if (queue == null)
|
if (queue == null)
|
||||||
return;
|
return;
|
||||||
queueAccessLock.lock();
|
queueAccessLock.lock();
|
||||||
try {
|
try {
|
||||||
if (queue != null)
|
if (queue != null)
|
||||||
queue.offer(record);
|
queue.offer(
|
||||||
|
new TimingsRecord(thread.getThreadId(),
|
||||||
|
timings.getId(),
|
||||||
|
start ? timings.getAcquireTime() : timings.getEndTime(),
|
||||||
|
start ? TimingsFileWriter.TimingsEventType.TIMINGS_START : TimingsFileWriter.TimingsEventType.TIMINGS_END
|
||||||
|
)
|
||||||
|
);
|
||||||
} finally {
|
} finally {
|
||||||
queueAccessLock.unlock();
|
queueAccessLock.unlock();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user