<throughput>
More formally: Prints a "before message", executes the nested tasks sequentially, and
prints an "after message".
point-of-time can have the format yyyy-MM-ddTHH:mm:ss, or the
format yyyy-MM-dd, or any format understood by DateFormat.parse(String).
.s s.s sec.s secs:s.s:m:s.sd (days)d h:md h:m:s.sw (weeks)w d dw d d h:mw d d h:m:s.s
Whitespace and seconds' fractions (".s") are optional.
Before the first nested task is executed, a message is composed from "fragments" as follows and logged:
| Fragment # | pQ |
pD |
cQ |
rQ |
showEta |
Text fragment |
|---|---|---|---|---|---|---|
| 1 | message |
|||||
|
2a
2b |
Y |
Y
Y |
Y |
(cQ qU
(cQ of pQ+cQ+rQ qU =
cQ/(pQ+cQ+rQ)%
|
||
| 3 | >0 | Y | Y | = approx. cQ*pD/pQ sec |
||
| 4 | Y | Y | Y | true | = ETA cB+cQ*pD/pQ |
|
| 5 | Y | ) |
Example:
Parameters are specified as follows:
quantityUnit="KB" previousQuantity="2000" previousDuration="60s" currentQuantity="2000"
remainingQuantity="2000" showEta="true"
According to the table above, the "before" message is composed of fragments 1, 2b, 3, 4 and 5:
Starting... (2,000KB of 6,000KB = 33.3% = approx. 60.0 sec = ETA 2014-03-05 00:01:00)
When the execution of the last of the nested tasks has completed, another message is composed as follows and logged:
| Fragment # | pQ |
pD |
cQ |
cD |
rQ |
showEta |
Text |
|---|---|---|---|---|---|---|---|
| 1 | Y | ... done! Took cD |
|||||
| 2 | Y | Y | (cQ qU |
||||
| 3 | Y | >0 | @ cQ/cD qU s |
||||
| 4a 4b |
>0 Y |
Y Y |
Y Y |
Y |
; pQ+cQ |
||
| 5 | Y | Y | Y | Y | of pQ+cQ+rQ
| ||
| 6a 6b |
>0 Y |
Y Y |
Y Y |
Y |
qU complete
| ||
| 7 | Y | Y | Y | Y | = (pQ+cQ)/(pQ+cQ+rQ)% |
||
| 8a 8b |
>0 Y |
Y Y |
Y Y |
Y Y |
Y |
@ (pQ+cQ)/(pD+cD) qU/s |
|
| 9 | Y | Y | >0 | ; rQ qU remaining |
|||
| 10a 10b |
Y |
Y |
Y >0 |
Y Y |
>0 >0 |
* |
= approx. rQ*(pD+cD)/(pQ+cQ)
= approx. rQ*cD/cQ |
| 11a 11b |
Y |
Y |
Y >0 |
Y Y |
>0 >0 |
true true |
= ETA rB+rQ*(pD+cD)/(pQ+cQ)
= ETA rB+rQ*cD/cQ |
| 12 | Y | Y | )
|
Example 'after' message:
... done! Took 1.000s (100 bytes @ 100 bytes/s; 200 of 300 bytes complete = 66.7% @ 100 bytes/s; 100 bytes remaining = approx. 1.000s = ETA 2014-02-24 00:56:00)
| Name | Description |
|---|---|
currentBeginning="..."
|
Defines the time of the beginning of the "current interval". |
currentDuration="..."
|
Defines the duration of the "current interval". |
currentEnding="..."
|
Defines the end of the "current interval". |
currentQuantity="..."
|
Defines the quantity processed in the "current interval". |
message="..."
|
The prefix of the message to log before execution of the nested tasks begins (see before message). |
previousBeginning="..."
|
Defines the time of the beginning of the "previous interval". |
previousDuration="..."
|
Defines the duration of the "previous interval". |
previousEnding="..."
|
Defines the end of the "previous interval". |
previousQuantity="..."
|
Defines the quantity processed in the "previous interval". |
quantityUnit="..."
|
The unit to be displayed in all counts and rates, e.g. |
remainingBeginning="..."
|
Defines the time of the beginning of the "remaining interval". |
remainingQuantity="..."
|
Defines the quantity processed in the "remaining interval". |
showEta="..."
|
Whether to compute and display the 'estimated time of arrival' (if enough of the other attributes are configured to compute one). |
totalQuantity="..."
|
Defines the total of previousQuantity="...", currentQuantity="..." and remainingQuantity="...".
|
| Name | Description |
|---|---|
<task>
|
The tasks to execute sequentially. |
Default values are underlined.
message="text|"Starting...""totalQuantity="float|0.0"previousQuantity="...", currentQuantity="..." and remainingQuantity="...". previousBeginning="point-of-time"previousDuration="duration"previousEnding="point-of-time"currentBeginning="point-of-time"currentDuration="duration"currentEnding="point-of-time"remainingBeginning="point-of-time"quantityUnit="unit-name"Copyright © 2019. All rights reserved.