You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2020/07/09 14:34:00 UTC
[jira] [Work logged] (LANG-1504) StopWatch: steps feature
[ https://issues.apache.org/jira/browse/LANG-1504?focusedWorklogId=456659&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-456659 ]
ASF GitHub Bot logged work on LANG-1504:
----------------------------------------
Author: ASF GitHub Bot
Created on: 09/Jul/20 14:33
Start Date: 09/Jul/20 14:33
Worklog Time Spent: 10m
Work Description: garydgregory commented on a change in pull request #482:
URL: https://github.com/apache/commons-lang/pull/482#discussion_r385869968
##########
File path: src/main/java/org/apache/commons/lang3/time/StopWatch.java
##########
@@ -606,4 +681,175 @@ public void unsplit() {
this.splitState = SplitState.UNSPLIT;
}
+ /**
+ * Stops the watch and returns the list of splits with duration on each split
+ * @return list of splits
+ */
+ public List<Split> getProcessedSplits() {
+ return getProcessedSplits(false);
+ }
+
+ /**
+ * Stops the watch and returns the list of splits with duration on each split (using milliseconds)
+ * @return list of splits
+ */
+ public List<Split> getNanoProcessedSplits() {
+ return getProcessedSplits(true);
+ }
+
+ /**
+ * Stops the watch and returns the list of splits with duration on each split
+ *
+ * @param useNanos if must use nanoseconds precision
+ * @return list of splits
+ */
+ public List<Split> getProcessedSplits(boolean useNanos) {
Review comment:
Using a boolean switch here feels weird to me. Java has a TimeUnit enum for things like this, I'd rather see a TimeUnit here. WDYT?
##########
File path: src/main/java/org/apache/commons/lang3/time/StopWatch.java
##########
@@ -481,6 +490,61 @@ public void split() {
this.splitState = SplitState.SPLIT;
}
+ /**
+ * <p>
+ * Splits the time to track the elapsed time between two consecutive {@code split()} calls.
+ * The label specified is used to identify each split
+ * </p>
+ *
+ * <p>
+ * After calling {@link #stop()}, we can call {@link #getReport()} to have a report with all time between each {@code split()} call, example:
+ * </p>
+ *
+ * <pre>
+ * 1 00:14:00.000
+ * 2 00:02:00.000
+ * 3 00:04:00.000
+ * </pre>
+ *
+ * @param label A number to identify this split
+ *
+ * @throws IllegalStateException
+ * if the StopWatch is not running.
+ * @since 3.10
+ */
+ public void split(int label) {
+ split(String.valueOf(label));
+ }
+
+ /**
+ * <p>
+ * Splits the time to track the elapsed time between two consecutive {@code split()} calls.
+ * The label specified is used to identify each split
+ * </p>
+ *
+ * <p>
+ * After calling {@link #stop()}, we can call {@link #getReport()} to have a report with all time between each {@code split()} call, example:
+ * </p>
+ *
+ * <pre>
+ * Baking cookies 00:14:00.000
+ * Serving 00:02:00.000
+ * Eating 00:04:00.000
+ * </pre>
+ *
+ * @param label A message for string presentation.
+ *
+ * @throws IllegalStateException
+ * if the StopWatch is not running.
+ * @since 3.10
+ */
+ public void split(String label) {
+ if (this.runningState != State.RUNNING) {
+ throw new IllegalStateException("Stopwatch is not running. ");
Review comment:
You have an extra space in the message.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Issue Time Tracking
-------------------
Worklog Id: (was: 456659)
Time Spent: 2h 40m (was: 2.5h)
> StopWatch: steps feature
> ------------------------
>
> Key: LANG-1504
> URL: https://issues.apache.org/jira/browse/LANG-1504
> Project: Commons Lang
> Issue Type: New Feature
> Components: lang.time.*
> Reporter: Topera
> Priority: Major
> Time Spent: 2h 40m
> Remaining Estimate: 0h
>
> Would be great if we could use StopWatch to track times on many places of our code.
> I created a new feature called "*steps*".
>
> With this feature we can add label to each step and then get a report with time between each step.
>
> Example:
> {code:java}
> final StopWatch watch = new StopWatch();
> watch.step("starting");
> exampleGoSleep();
> watch.step("sleeping");
> exampleGoWalk();
> watch.step("walking ");
> exampleGoDance();
> watch.step("dancing ");
> System.out.println(watch.getStepsReport());
> {code}
> The output would be:
> {noformat}
> [starting] 0ms
> [sleeping] 235ms
> [walking ] 20ms
> [dancing ] 458ms
> {noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)