<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-
ddT
HH:
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 d
w
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.