rocicorp / repc

The canonical Replicache client, implemented in Rust.
Other
31 stars 7 forks source link

Use an enum for RPC instead of strings #281

Closed arv closed 3 years ago

arv commented 3 years ago

Strings are slow for JS <-> Rust

arv commented 3 years ago

And here are the perf nubers:

rpc-less-strings:

populate 1024x1000 (clean, indexes: 0) x 3.97 MB/s ±0.0% (7 runs sampled)
populate 1024x1000 (dirty, indexes: 0) x 4.40 MB/s ±0.0% (10 runs sampled)
populate 1024x1000 (clean, indexes: 1) x 2.70 MB/s ±0.0% (6 runs sampled)
populate 1024x1000 (clean, indexes: 2) x 2.31 MB/s ±0.0% (5 runs sampled)
read tx 1024x1000 x 7.81 MB/s ±0.0% (16 runs sampled)
read tx 1024x5000 x 8.21 MB/s ±0.0% (5 runs sampled)
scan 1024x1000 x 19.15 MB/s ±0.0% (39 runs sampled)
scan 1024x5000 x 24.54 MB/s ±0.0% (11 runs sampled)
write single byte x 8.62 tx/s ±0.0% (18 runs sampled)
create index 1024x1000 x 23.81 op/s ±0.0% (48 runs sampled)
create index 1024x5000 x 5.43 op/s ±0.0% (11 runs sampled)
populate 1024x1000 (clean, indexes: 0) x 4.16 MB/s ±0.0% (7 runs sampled)
populate 1024x1000 (dirty, indexes: 0) x 4.63 MB/s ±0.0% (10 runs sampled)
populate 1024x1000 (clean, indexes: 1) x 3.15 MB/s ±0.0% (7 runs sampled)
populate 1024x1000 (clean, indexes: 2) x 2.41 MB/s ±0.0% (5 runs sampled)
read tx 1024x1000 x 7.69 MB/s ±0.0% (16 runs sampled)
read tx 1024x5000 x 8.36 MB/s ±0.0% (5 runs sampled)
scan 1024x1000 x 19.15 MB/s ±0.0% (39 runs sampled)
scan 1024x5000 x 24.66 MB/s ±0.0% (11 runs sampled)
write single byte x 7.63 tx/s ±0.0% (18 runs sampled)
create index 1024x1000 x 23.81 op/s ±0.0% (48 runs sampled)
create index 1024x5000 x 5.49 op/s ±0.0% (12 runs sampled)

master:

populate 1024x1000 (clean, indexes: 0) x 3.36 MB/s ±0.0% (6 runs sampled)
populate 1024x1000 (dirty, indexes: 0) x 4.26 MB/s ±0.0% (9 runs sampled)
populate 1024x1000 (clean, indexes: 1) x 2.65 MB/s ±0.0% (6 runs sampled)
populate 1024x1000 (clean, indexes: 2) x 2.10 MB/s ±0.0% (5 runs sampled)
read tx 1024x1000 x 7.29 MB/s ±0.0% (15 runs sampled)
read tx 1024x5000 x 7.21 MB/s ±0.0% (5 runs sampled)
scan 1024x1000 x 17.76 MB/s ±0.0% (35 runs sampled)
scan 1024x5000 x 23.25 MB/s ±0.0% (10 runs sampled)
write single byte x 7.69 tx/s ±0.0% (16 runs sampled)
create index 1024x1000 x 24.39 op/s ±0.0% (49 runs sampled)
create index 1024x5000 x 5.32 op/s ±0.0% (11 runs sampled)
populate 1024x1000 (clean, indexes: 0) x 3.17 MB/s ±0.0% (6 runs sampled)
populate 1024x1000 (dirty, indexes: 0) x 4.21 MB/s ±0.0% (9 runs sampled)
populate 1024x1000 (clean, indexes: 1) x 2.78 MB/s ±0.0% (6 runs sampled)
populate 1024x1000 (clean, indexes: 2) x 2.21 MB/s ±0.0% (5 runs sampled)
read tx 1024x1000 x 7.63 MB/s ±0.0% (15 runs sampled)
read tx 1024x5000 x 7.81 MB/s ±0.0% (5 runs sampled)
scan 1024x1000 x 19.93 MB/s ±0.0% (41 runs sampled)
scan 1024x5000 x 25.30 MB/s ±0.0% (11 runs sampled)
write single byte x 8.62 tx/s ±0.0% (18 runs sampled)
create index 1024x1000 x 24.39 op/s ±0.0% (49 runs sampled)
create index 1024x5000 x 5.00 op/s ±0.0% (10 runs sampled)