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
Especially Cstruct.t allocations are costly. Currently, while there are few Cstruct.create (only in segment.ml for checksum pseudo-header (TODO: could be once per flow), and encode/encode_and_checksum (both not used by Utcp_mirage), there are still some Cstruct.concat (since the interface for e.g. Mirage_flow.read is a single Cstruct.t, also internally in uTCP we use a single Cstruct.t for sending (so, the writev just calls write with Cstruct.concat all the buffers). And finally, there's a call to Cstruct.append when stuff was taken from the Reassembly queue (which indeed holds a list, but maybe_take flattens this (using Cstruct.concat)).
The text was updated successfully, but these errors were encountered:
Especially Cstruct.t allocations are costly. Currently, while there are few
Cstruct.create
(only in segment.ml for checksum pseudo-header (TODO: could be once per flow), and encode/encode_and_checksum (both not used by Utcp_mirage), there are still someCstruct.concat
(since the interface for e.g. Mirage_flow.read is a singleCstruct.t
, also internally in uTCP we use a single Cstruct.t for sending (so, thewritev
just callswrite
withCstruct.concat
all the buffers). And finally, there's a call toCstruct.append
when stuff was taken from the Reassembly queue (which indeed holds a list, butmaybe_take
flattens this (usingCstruct.concat
)).The text was updated successfully, but these errors were encountered: