Skip to content

Commit

Permalink
slicer: Skip object meta evaluation, if it is already done
Browse files Browse the repository at this point in the history
Updated after benchmark. For the header object we already made flushObjectMetadata step in _writeChild and don't need to compute this data again.

                                                 │   old.txt    │              new.txt               │
                                                 │    sec/op    │   sec/op     vs base               │
SliceDataIntoObjects/slice_1-128/reader-16         116.55µ ± 1%   62.61µ ± 1%  -46.28% (p=0.002 n=6)
SliceDataIntoObjects/slice_1-128/writer-16         121.73µ ± 2%   64.94µ ± 1%  -46.65% (p=0.002 n=6)
SliceDataIntoObjects/slice_4-128/reader-16         111.50µ ± 3%   65.48µ ± 1%  -41.27% (p=0.002 n=6)
SliceDataIntoObjects/slice_4-128/writer-16         113.84µ ± 1%   67.38µ ± 2%  -40.81% (p=0.002 n=6)
SliceDataIntoObjects/slice_16-128/reader-16        110.43µ ± 1%   61.57µ ± 2%  -44.25% (p=0.002 n=6)
SliceDataIntoObjects/slice_16-128/writer-16        115.11µ ± 1%   63.93µ ± 1%  -44.46% (p=0.002 n=6)
SliceDataIntoObjects/slice_64-128/reader-16        109.10µ ± 1%   64.89µ ± 1%  -40.53% (p=0.002 n=6)
SliceDataIntoObjects/slice_64-128/writer-16        114.07µ ± 1%   67.24µ ± 1%  -41.05% (p=0.002 n=6)
SliceDataIntoObjects/slice_256-128/reader-16       108.68µ ± 1%   61.19µ ± 1%  -43.70% (p=0.002 n=6)
SliceDataIntoObjects/slice_256-128/writer-16        233.2µ ± 0%   236.2µ ± 2%        ~ (p=0.093 n=6)
SliceDataIntoObjects/slice_1024-128/reader-16      109.04µ ± 1%   64.34µ ± 1%  -41.00% (p=0.002 n=6)
SliceDataIntoObjects/slice_1024-128/writer-16       554.6µ ± 0%   569.6µ ± 2%   +2.71% (p=0.002 n=6)
SliceDataIntoObjects/slice_4096-128/reader-16      114.62µ ± 0%   63.45µ ± 1%  -44.65% (p=0.002 n=6)
SliceDataIntoObjects/slice_4096-128/writer-16       1.855m ± 2%   1.865m ± 1%        ~ (p=0.180 n=6)
SliceDataIntoObjects/slice_16384-128/reader-16     117.09µ ± 3%   67.15µ ± 0%  -42.65% (p=0.002 n=6)
SliceDataIntoObjects/slice_16384-128/writer-16      7.745m ± 2%   7.889m ± 1%   +1.86% (p=0.026 n=6)
SliceDataIntoObjects/slice_65536-128/reader-16     118.90µ ± 1%   67.12µ ± 1%  -43.55% (p=0.002 n=6)
SliceDataIntoObjects/slice_65536-128/writer-16      30.71m ± 1%   31.07m ± 0%   +1.20% (p=0.002 n=6)
SliceDataIntoObjects/slice_262144-128/reader-16    124.95µ ± 2%   72.49µ ± 1%  -41.98% (p=0.002 n=6)
SliceDataIntoObjects/slice_262144-128/writer-16     124.0m ± 1%   112.7m ± 0%   -9.15% (p=0.002 n=6)
SliceDataIntoObjects/slice_1048576-128/reader-16    184.8µ ± 2%   125.1µ ± 3%  -32.30% (p=0.002 n=6)
SliceDataIntoObjects/slice_1048576-128/writer-16    453.8m ± 1%   518.8m ± 2%  +14.32% (p=0.002 n=6)
geomean                                             461.0µ        318.0µ       -31.02%

                                                 │    old.txt    │               new.txt                │
                                                 │     B/op      │     B/op       vs base               │
SliceDataIntoObjects/slice_1-128/reader-16         16.880Ki ± 0%    9.453Ki ± 0%  -44.00% (p=0.002 n=6)
SliceDataIntoObjects/slice_1-128/writer-16         18.100Ki ± 0%    9.344Ki ± 0%  -48.38% (p=0.002 n=6)
SliceDataIntoObjects/slice_4-128/reader-16          14.75Ki ± 0%    10.33Ki ± 0%  -29.99% (p=0.002 n=6)
SliceDataIntoObjects/slice_4-128/writer-16          15.91Ki ± 0%    10.22Ki ± 0%  -35.77% (p=0.002 n=6)
SliceDataIntoObjects/slice_16-128/reader-16        14.504Ki ± 0%    8.984Ki ± 0%  -38.06% (p=0.002 n=6)
SliceDataIntoObjects/slice_16-128/writer-16        15.724Ki ± 0%    8.968Ki ± 0%  -42.97% (p=0.002 n=6)
SliceDataIntoObjects/slice_64-128/reader-16         13.63Ki ± 0%    10.33Ki ± 0%  -24.21% (p=0.002 n=6)
SliceDataIntoObjects/slice_64-128/writer-16         14.85Ki ± 0%    10.22Ki ± 0%  -31.17% (p=0.002 n=6)
SliceDataIntoObjects/slice_256-128/reader-16       14.005Ki ± 0%    8.985Ki ± 0%  -35.84% (p=0.002 n=6)
SliceDataIntoObjects/slice_256-128/writer-16        31.33Ki ± 0%    31.18Ki ± 0%   -0.47% (p=0.002 n=6)
SliceDataIntoObjects/slice_1024-128/reader-16      14.008Ki ± 0%    9.864Ki ± 0%  -29.58% (p=0.002 n=6)
SliceDataIntoObjects/slice_1024-128/writer-16       74.32Ki ± 0%    81.16Ki ± 0%   +9.21% (p=0.002 n=6)
SliceDataIntoObjects/slice_4096-128/reader-16      16.528Ki ± 0%    9.874Ki ± 0%  -40.26% (p=0.002 n=6)
SliceDataIntoObjects/slice_4096-128/writer-16       250.8Ki ± 0%    266.2Ki ± 0%   +6.13% (p=0.002 n=6)
SliceDataIntoObjects/slice_16384-128/reader-16      16.34Ki ± 0%    11.14Ki ± 0%  -31.82% (p=0.002 n=6)
SliceDataIntoObjects/slice_16384-128/writer-16      965.2Ki ± 0%   1038.0Ki ± 0%   +7.55% (p=0.002 n=6)
SliceDataIntoObjects/slice_65536-128/reader-16      17.27Ki ± 0%    10.97Ki ± 0%  -36.50% (p=0.002 n=6)
SliceDataIntoObjects/slice_65536-128/writer-16      3.711Mi ± 0%    3.981Mi ± 0%   +7.27% (p=0.002 n=6)
SliceDataIntoObjects/slice_262144-128/reader-16     16.04Ki ± 0%    11.41Ki ± 0%  -28.86% (p=0.002 n=6)
SliceDataIntoObjects/slice_262144-128/writer-16     14.88Mi ± 0%    15.53Mi ± 0%   +4.34% (p=0.002 n=6)
SliceDataIntoObjects/slice_1048576-128/reader-16    23.04Ki ± 1%    17.77Ki ± 3%  -22.87% (p=0.002 n=6)
SliceDataIntoObjects/slice_1048576-128/writer-16    57.72Mi ± 0%    63.79Mi ± 0%  +10.51% (p=0.002 n=6)
geomean                                             61.36Ki         46.61Ki       -24.04%

                                                 │   old.txt   │               new.txt               │
                                                 │  allocs/op  │  allocs/op    vs base               │
SliceDataIntoObjects/slice_1-128/reader-16          254.0 ± 0%     149.0 ± 0%  -41.34% (p=0.002 n=6)
SliceDataIntoObjects/slice_1-128/writer-16          276.0 ± 0%     148.0 ± 0%  -46.38% (p=0.002 n=6)
SliceDataIntoObjects/slice_4-128/reader-16          223.0 ± 0%     161.0 ± 0%  -27.80% (p=0.002 n=6)
SliceDataIntoObjects/slice_4-128/writer-16          244.0 ± 0%     160.0 ± 0%  -34.43% (p=0.002 n=6)
SliceDataIntoObjects/slice_16-128/reader-16         218.0 ± 0%     142.0 ± 0%  -34.86% (p=0.002 n=6)
SliceDataIntoObjects/slice_16-128/writer-16         240.0 ± 0%     143.0 ± 0%  -40.42% (p=0.002 n=6)
SliceDataIntoObjects/slice_64-128/reader-16         204.0 ± 0%     161.0 ± 0%  -21.08% (p=0.002 n=6)
SliceDataIntoObjects/slice_64-128/writer-16         226.0 ± 0%     160.0 ± 0%  -29.20% (p=0.002 n=6)
SliceDataIntoObjects/slice_256-128/reader-16        211.0 ± 0%     142.0 ± 0%  -32.70% (p=0.002 n=6)
SliceDataIntoObjects/slice_256-128/writer-16        472.0 ± 0%     478.0 ± 0%   +1.27% (p=0.002 n=6)
SliceDataIntoObjects/slice_1024-128/reader-16       211.0 ± 0%     155.0 ± 0%  -26.54% (p=0.002 n=6)
SliceDataIntoObjects/slice_1024-128/writer-16      1.140k ± 0%    1.283k ± 0%  +12.54% (p=0.002 n=6)
SliceDataIntoObjects/slice_4096-128/reader-16       247.0 ± 0%     155.0 ± 0%  -37.25% (p=0.002 n=6)
SliceDataIntoObjects/slice_4096-128/writer-16      3.884k ± 0%    4.237k ± 0%   +9.10% (p=0.002 n=6)
SliceDataIntoObjects/slice_16384-128/reader-16      243.0 ± 0%     172.0 ± 0%  -29.22% (p=0.002 n=6)
SliceDataIntoObjects/slice_16384-128/writer-16     14.91k ± 0%    16.51k ± 0%  +10.70% (p=0.002 n=6)
SliceDataIntoObjects/slice_65536-128/reader-16      259.0 ± 0%     169.0 ± 0%  -34.75% (p=0.002 n=6)
SliceDataIntoObjects/slice_65536-128/writer-16     58.73k ± 0%    64.87k ± 0%  +10.47% (p=0.002 n=6)
SliceDataIntoObjects/slice_262144-128/reader-16     240.0 ± 0%     178.0 ± 1%  -25.83% (p=0.002 n=6)
SliceDataIntoObjects/slice_262144-128/writer-16    233.8k ± 0%    252.3k ± 0%   +7.92% (p=0.002 n=6)
SliceDataIntoObjects/slice_1048576-128/reader-16    340.5 ± 1%     279.5 ± 3%  -17.91% (p=0.002 n=6)
SliceDataIntoObjects/slice_1048576-128/writer-16   909.8k ± 0%   1032.7k ± 0%  +13.51% (p=0.002 n=6)
geomean                                             930.0          732.6       -21.23%

Signed-off-by: Evgenii Baidakov <[email protected]>
  • Loading branch information
smallhive committed Jul 28, 2023
1 parent e423886 commit 9039fd3
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions object/slicer/slicer.go
Original file line number Diff line number Diff line change
Expand Up @@ -469,9 +469,19 @@ func flushObjectMetadata(signer neofscrypto.Signer, meta dynamicObjectMetadata,
}

func writeInMemObject(ctx context.Context, signer user.Signer, w ObjectWriter, header object.Object, payload []byte, meta dynamicObjectMetadata, session *session.Object) (oid.ID, error) {
id, err := flushObjectMetadata(signer, meta, &header)
if err != nil {
return id, err
var (
id oid.ID
err error
isSet bool
)

id, isSet = header.ID()
if !isSet || header.Signature() == nil {
id, err = flushObjectMetadata(signer, meta, &header)

if err != nil {
return id, err
}
}

var prm client.PrmObjectPutInit
Expand Down

0 comments on commit 9039fd3

Please sign in to comment.