|
6 | 6 | #%[leakvar = ""] |
7 | 7 | #%#---------------------------------------------------------------------------- |
8 | 8 | #%if measure_load_time |
| 9 | +_ble_init_measure_prev= |
| 10 | +_ble_init_measure_section= |
| 11 | +function ble/init/measure/section { |
| 12 | + local now=${EPOCHREALTIME:-$(date +'%s.%N')} |
| 13 | + |
| 14 | + local s=${now%%[!0-9]*} u=000000 |
| 15 | + if [[ $s != "$now" ]]; then |
| 16 | + u=${now##*[!0-9]}000000 |
| 17 | + u=${u::6} |
| 18 | + fi |
| 19 | + local stime=$s.$u time=$((s*1000000+10#0$u)) |
| 20 | + |
| 21 | + if [[ $_ble_init_measure_section ]]; then |
| 22 | + local elapsed=$((time-_ble_init_measure_prev)) |
| 23 | + s=$((elapsed/1000)) |
| 24 | + u=00$((elapsed%1000)) |
| 25 | + u=${u:${#u}-3} |
| 26 | + elapsed=$s.${u}ms |
| 27 | + builtin printf '[ble.sh init %s] %s done (%s)\n' "$stime" "$_ble_init_measure_section" "$elapsed" >&2 |
| 28 | + else |
| 29 | + builtin printf '[ble.sh init %s] start\n' "$stime" >&2 |
| 30 | + fi |
| 31 | + |
| 32 | + _ble_init_measure_section=$1 |
| 33 | + _ble_init_measure_prev=$time |
| 34 | +} |
9 | 35 | _ble_debug_measure_fork_count=$(echo $BASHPID) |
10 | | -TIMEFORMAT='[Elapsed %Rs; CPU U:%Us S:%Ss (%P%%)]' |
| 36 | +TIMEFORMAT=' [Elapsed %Rs; CPU U:%Us S:%Ss (%P%%)]' |
11 | 37 | function ble/debug/measure-set-timeformat { |
12 | 38 | local title=$1 opts=$2 |
13 | 39 | local new=$(echo $BASHPID) |
14 | 40 | local fork=$(((new-_ble_debug_measure_fork_count-1)&0xFFFF)) |
15 | 41 | _ble_debug_measure_fork_count=$new |
16 | | - TIMEFORMAT="[Elapsed %Rs; CPU U:%Us S:%Ss (%P%%)] $title" |
| 42 | + TIMEFORMAT=" [Elapsed %Rs; CPU U:%Us S:%Ss (%P%%)] $title" |
17 | 43 | [[ :$opts: != *:nofork:* ]] && |
18 | 44 | TIMEFORMAT=$TIMEFORMAT" ($fork forks)" |
19 | 45 | } |
@@ -60,9 +86,9 @@ function ble/util/print { printf '%s\n' "$1"; } |
60 | 86 | # |
61 | 87 |
|
62 | 88 | #%if measure_load_time |
63 | | -echo "ble.sh: $EPOCHREALTIME load start" >&2 |
| 89 | +ble/init/measure/section 'parse' |
64 | 90 | time { |
65 | | -echo "ble.sh: $EPOCHREALTIME parsed" >&2 |
| 91 | +ble/init/measure/section 'source' |
66 | 92 | # load_time (2015-12-03) |
67 | 93 | # core 12ms |
68 | 94 | # decode 10ms |
@@ -2625,6 +2651,9 @@ function ble-attach { |
2625 | 2651 | fi |
2626 | 2652 |
|
2627 | 2653 | [[ ! $_ble_attached ]] || return 0 |
| 2654 | +#%if measure_load_time |
| 2655 | + ble/init/measure/section 'prompt' |
| 2656 | +#%end |
2628 | 2657 | _ble_attached=1 |
2629 | 2658 | BLE_ATTACHED=1 |
2630 | 2659 |
|
@@ -2694,6 +2723,10 @@ function ble-attach { |
2694 | 2723 | ble_attach_first_prompt=1 \ |
2695 | 2724 | ble/canvas/panel/render # 42ms |
2696 | 2725 | ble/util/buffer.flush # 0.2ms |
| 2726 | +#%if measure_load_time |
| 2727 | + ble/util/print >&2 |
| 2728 | + ble/init/measure/section 'bind' |
| 2729 | +#%end |
2697 | 2730 |
|
2698 | 2731 | #%if leakvar |
2699 | 2732 | ble/debug/leakvar#check $"leakvar" A6-edit |
@@ -2746,6 +2779,9 @@ function ble-attach { |
2746 | 2779 | # Note: ble-decode/{initialize,reset-default-keymap} 内で |
2747 | 2780 | # info を設定する事があるので表示する。 |
2748 | 2781 | ble/edit/info/default |
| 2782 | +#%if measure_load_time |
| 2783 | + ble/init/measure/section 'idle' |
| 2784 | +#%end |
2749 | 2785 | #%if leakvar |
2750 | 2786 | ble/debug/leakvar#check $"leakvar" A11-info |
2751 | 2787 | #%end.i |
@@ -3150,9 +3186,9 @@ function ble/base/sub:lib { return 0; } # do nothing |
3150 | 3186 | fi |
3151 | 3187 |
|
3152 | 3188 | #%if measure_load_time |
3153 | | -ble/debug/measure-set-timeformat Total nofork; } |
| 3189 | +ble/debug/measure-set-timeformat 'Total' nofork; } |
3154 | 3190 | _ble_init_exit=$? |
3155 | | -echo "ble.sh: $EPOCHREALTIME load end" >&2 |
| 3191 | +[[ ${BLE_ATTACHED-} ]] || ble/init/measure/section 'wait' |
3156 | 3192 | ble/util/setexit "$_ble_init_exit" |
3157 | 3193 | #%end |
3158 | 3194 |
|
|
0 commit comments