Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve deserialization performance using an object pool #2678

Open
steelgeek091 opened this issue Sep 24, 2024 · 0 comments
Open

Improve deserialization performance using an object pool #2678

steelgeek091 opened this issue Sep 24, 2024 · 0 comments

Comments

@steelgeek091
Copy link
Collaborator

When deserializing Move objects, we found that the current deserialization performance is poor and has room for improvement.

The following potential solutions are available:

  1. Create a global object pool. For large objects that are frequently reused, reuse them and reassign values after each transaction is completed.
  2. For objects that take a long time to deserialize, analyze the specific reasons and resolve them.
simple_deserialize blob size 1 layout Struct(Runtime([Bool]))
Time elapsed: 117ns
simple_deserialize blob size 8 layout U64
Time elapsed: 449ns
simple_deserialize blob size 8 layout U64
Time elapsed: 46ns
simple_deserialize blob size 211 layout Vector(U8)
Time elapsed: 473ns
simple_deserialize blob size 32 layout Address
Time elapsed: 170ns
simple_deserialize blob size 8 layout Struct(Runtime([U64]))
Time elapsed: 179ns
simple_deserialize blob size 16 layout U128
Time elapsed: 85ns
simple_deserialize blob size 40 layout Struct(Runtime([Address, U64]))
Time elapsed: 154ns
simple_deserialize blob size 32 layout Address
Time elapsed: 52ns


simple_deserialize blob size 10390 layout Struct(Runtime([U64, U64, Vector(Struct(Runtime([Struct(Runtime([Vector(U8)])), U64])))]))
Time elapsed: 91.481µs



simple_deserialize blob size 32 layout Address
Time elapsed: 55ns
simple_deserialize blob size 33 layout Struct(Runtime([Struct(Runtime([U256])), Bool]))
Time elapsed: 197ns
simple_deserialize blob size 32 layout Address
Time elapsed: 49ns
simple_deserialize blob size 32 layout Address
Time elapsed: 42ns
simple_deserialize blob size 8 layout U64
Time elapsed: 37ns
simple_deserialize blob size 8 layout U64
Time elapsed: 27ns
simple_deserialize blob size 8 layout U64
Time elapsed: 16ns


simple_deserialize blob size 209 layout Struct(Runtime([Vector(U8), Vector(U8), Vector(U8), Vector(U8), Struct(Runtime([Vector(U8)]))]))
Time elapsed: 484ns


simple_deserialize blob size 20 layout Vector(U8)
Time elapsed: 64ns
simple_deserialize blob size 25 layout Vector(U8)
Time elapsed: 67ns
simple_deserialize blob size 1 layout Vector(U8)
Time elapsed: 35ns



simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 13.448µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 11.454µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 10.07µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.107µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.473µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.159µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.956µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.094µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.406µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.201µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.567µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.004µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.365µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.005µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.73µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 8.925µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.289µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 10.153µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 10.225µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 10.099µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 13.681µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.112µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.432µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.228µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.422µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.005µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.406µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 8.889µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.349µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.009µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.356µs
simple_deserialize blob size 770 layout Vector(Vector(U8))
Time elapsed: 9.003µs



simple_deserialize blob size 1 layout U8
Time elapsed: 36ns
simple_deserialize blob size 32 layout Address
Time elapsed: 51ns
simple_deserialize blob size 1 layout Struct(Runtime([Bool]))
Time elapsed: 85ns
2024-09-22T07:58:05.423766Z  INFO rooch_sequencer::actor::sequencer: sequencer tx: 0xb85c…47a8 order: 14
simple_deserialize blob size 1 layout Struct(Runtime([Bool]))
Time elapsed: 103ns
simple_deserialize blob size 40 layout Struct(Runtime([Address, U64]))
Time elapsed: 128ns
simple_deserialize blob size 45 layout Struct(Runtime([U64, Struct(Runtime([Vector(Struct(Runtime([U64, Address, Struct(Runtime([Vector(U8)]))])))])), Struct(Runtime([Vector(Vector(U8))])), Struct(Runtime([Vector(U8)]))]))
Time elapsed: 415ns
simple_deserialize blob size 32 layout Address
Time elapsed: 69ns
simple_deserialize blob size 1 layout Struct(Runtime([Bool]))
Time elapsed: 119ns
simple_deserialize blob size 1 layout U8
Time elapsed: 62ns
simple_deserialize blob size 1 layout U8
Time elapsed: 19ns
simple_deserialize blob size 32 layout Address
Time elapsed: 67ns
simple_deserialize blob size 67 layout Struct(Runtime([Address, Struct(Runtime([Vector(U8)]))]))
Time elapsed: 348ns
simple_deserialize blob size 467 layout Struct(Runtime([U64, Vector(U8), Vector(U8), U64, Vector(Vector(U8)), U64, U64]))
Time elapsed: 1.135µs
simple_deserialize blob size 32 layout Address
Time elapsed: 88ns
simple_deserialize blob size 32 layout Address
Time elapsed: 43ns
simple_deserialize blob size 32 layout Address
Time elapsed: 64ns
simple_deserialize blob size 32 layout Address
Time elapsed: 45ns
simple_deserialize blob size 8 layout Struct(Runtime([U64]))
Time elapsed: 112ns
simple_deserialize blob size 1 layout U8
Time elapsed: 36ns
simple_deserialize blob size 1 layout U8
Time elapsed: 32ns
simple_deserialize blob size 32 layout Address
Time elapsed: 52ns
simple_deserialize blob size 33 layout Struct(Runtime([Struct(Runtime([U256])), Bool]))
Time elapsed: 233ns
simple_deserialize blob size 1 layout U8
Time elapsed: 44ns
simple_deserialize blob size 1 layout U8
Time elapsed: 19ns
simple_deserialize blob size 32 layout Address
Time elapsed: 63ns
simple_deserialize blob size 33 layout Struct(Runtime([Struct(Runtime([Struct(Runtime([Vector(Address)]))]))]))
Time elapsed: 326ns
simple_deserialize blob size 1 layout U8
Time elapsed: 28ns
simple_deserialize blob size 1 layout U8
Time elapsed: 15ns
simple_deserialize blob size 33 layout Struct(Runtime([Struct(Runtime([U256])), Bool]))
Time elapsed: 166ns
simple_deserialize blob size 32 layout Address
Time elapsed: 59ns
simple_deserialize blob size 1 layout U8
Time elapsed: 30ns
simple_deserialize blob size 1 layout U8
Time elapsed: 15ns
simple_deserialize blob size 32 layout Address
Time elapsed: 53ns
simple_deserialize blob size 93 layout Struct(Runtime([Struct(Runtime([Vector(U8)])), Struct(Runtime([U64]))]))
Time elapsed: 344ns
simple_deserialize blob size 32 layout Address
Time elapsed: 49ns
simple_deserialize blob size 45 layout Struct(Runtime([U64, Struct(Runtime([Vector(Struct(Runtime([U64, Address, Struct(Runtime([Vector(U8)]))])))])), Struct(Runtime([Vector(Vector(U8))])), Struct(Runtime([Vector(U8)]))]))
Time elapsed: 415ns
simple_deserialize blob size 32 layout Address
Time elapsed: 49ns
simple_deserialize blob size 32 layout Address
Time elapsed: 41ns
simple_deserialize blob size 32 layout Address
Time elapsed: 33ns
simple_deserialize blob size 1 layout U8
Time elapsed: 34ns
simple_deserialize blob size 1 layout U8
Time elapsed: 22ns
simple_deserialize blob size 16 layout U128
Time elapsed: 80ns
simple_deserialize blob size 9 layout Struct(Runtime([Bool, U64]))
Time elapsed: 92ns
simple_deserialize blob size 32 layout Address
Time elapsed: 46ns
simple_deserialize blob size 1 layout U8
Time elapsed: 29ns
simple_deserialize blob size 1 layout U8
Time elapsed: 24ns
simple_deserialize blob size 32 layout Address
Time elapsed: 70ns
simple_deserialize blob size 40 layout Struct(Runtime([Address, U64]))
Time elapsed: 118ns
simple_deserialize blob size 32 layout Address
Time elapsed: 45ns
simple_deserialize blob size 137 layout Struct(Runtime([Struct(Runtime([Vector(U8)])), Struct(Runtime([Struct(Runtime([Struct(Runtime([Struct(Runtime([Vector(Address)]))]))]))]))]))
Time elapsed: 536ns
simple_deserialize blob size 32 layout Address
Time elapsed: 49ns
simple_deserialize blob size 32 layout Address
Time elapsed: 35ns
simple_deserialize blob size 1 layout Struct(Runtime([Bool]))
Time elapsed: 91ns
simple_deserialize blob size 32 layout Address
Time elapsed: 36ns
simple_deserialize blob size 1 layout U8
Time elapsed: 30ns
simple_deserialize blob size 1 layout U8
Time elapsed: 24ns
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

1 participant