Archived
0

Timings are now written to the file

This commit is contained in:
Daniil
2018-08-07 16:11:27 +07:00
parent b2d3792384
commit 22dbf8caa8
2 changed files with 20 additions and 8 deletions

View File

@@ -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);
} }
} }
} }

View File

@@ -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();
} }