You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import sys
import re
profile_func_names = {}
for line in sys.stdin:
func_names = re.match('^(\d+): (\S+)\n', line)
func_times = re.match('^Function (\d+) took', line)
if func_names:
func_index = func_names.group(1)
profile_func_names[func_index] = func_names.group(2)
elif func_times:
func_index = func_times.group(1)
func_time_with_func_name = "{} {}".format(line.rstrip('\n'), profile_func_names[func_index])
print(func_time_with_func_name)
else:
print(line.rstrip('\n'))
The output looks like this:
$ ./target/release/phase2-scout smptbvas.yaml | python scout_profile_parser.py
Process yaml!
blockdatasize 1612
blockdatacopy to 11520 from 0 for 1612 bytes
savepoststateroot from 13059
Total time taken 65612us
Function 35 took 40143us (61%) ethash_keccakf1600
Function 3 took 5246us (7%) ~lib/rt/stub/__alloc
Function 8 took 3024us (4%) ~lib/memory/memory.copy
Function 19 took 2629us (4%) ~lib/typedarray/Uint8Array#subarray
Function 25 took 2604us (3%) rlp/_decode
Function 14 took 1644us (2%) ~lib/array/ensureSize
Function 4 took 1313us (2%) ~lib/memory/memory.fill
Function 36 took 1180us (1%) keccak/ethash_keccak256
Function 12 took 936us (1%) ~lib/typedarray/Uint8Array#__get
Function 24 took 923us (1%) ~lib/array/Array<rlp/RLPData>#push
Function 17 took 915us (1%) rlp/Decoded#constructor
Function 13 took 872us (1%) ~lib/rt/stub/__realloc
Function 18 took 848us (1%) rlp/RLPData#constructor
Function 15 took 568us (0%) ~lib/array/Array<u8>#__set
Function 16 took 464us (0%) main/uintArrToNibbleArr
Function 20 took 410us (0%) ~lib/arraybuffer/ArrayBufferView#constructor
Function 37 took 394us (0%) f2_ethash_keccak
Function 32 took 370us (0%) main/verifyProof
Function 31 took 221us (0%) main/matchingNibbleLength
Function 28 took 217us (0%) ~lib/typedarray/Uint64Array#__get
Function 27 took 192us (0%) ~lib/array/Array<rlp/RLPData>#__get
Function 9 took 157us (0%) ~lib/rt/__allocArray
Function 7 took 83us (0%) ~lib/typedarray/Uint64Array.wrap
Function 30 took 60us (0%) ~lib/array/Array<u8>#slice
Function 26 took 39us (0%) rlp/decode
Function 29 took 35us (0%) main/getNodeType
Function 6 took 29us (0%) ~lib/arraybuffer/ArrayBuffer#get:byteLength
Function 21 took 24us (0%) ~lib/dataview/DataView#constructor
Function 22 took 22us (0%) ~lib/arraybuffer/ArrayBufferView#get:byteOffset
Function 33 took 18us (0%) main/main
Function 10 took 14us (0%) ~lib/array/Array.create<u8>
Function 11 took 1us (0%) ~lib/typedarray/Uint8Array.wrap
Function 5 took 1us (0%) ~lib/arraybuffer/ArrayBuffer#constructor
Function 23 took 1us (0%) ~lib/dataview/DataView#getUint16
Result: Some(I32(13059))
Execution finished
The text was updated successfully, but these errors were encountered:
The profiling feature is in a branch: https://github.com/ewasm/scout/tree/profiling
And more features in a different branch: https://github.com/s1na/wasmi/tree/profile-invocations
Here's a script to format the profile output:
The output looks like this:
The text was updated successfully, but these errors were encountered: