Checking in here, I may jump to the "Submit your code" section of the contributor docs and rely on code review to vet the approach and/or get a yes/no?
Thanks, Konnor On Friday, June 30, 2023 at 1:02:44 AM UTC+2 Konnor Krupp wrote: > Hey all, > > (~beginner to V8 internals!) > > We have a use case which does high frequency lambda-like JS function > execution across any/multiple threads in a constrained environment > (Android) which has heavy cost for malloc. > > In local on-device benchmarking, we noticed grabbing the V8::EntryScope on > every lambda-like function call does a few malloc/free pairs, specifically: > * Context::Enter uses two DetachableVectors for the first time (once each) > which mallocs space > * HandleScope::CreateHandle uses a DetachableVector for the first time > (once) which mallocs space > * Destruction of the V8::EntryScope frees this space > > For our case which rarely nests v8::EntryScopes and creates/frees them in > pairs at high frequency, it would be more efficient (overall) to use an > absl::InlinedVector-like object which assumes at least one (but up to N) > Handles will be created / Contexts will be entered/saved. This shaved a few > percent off our minimal overhead numbers. Naturally this would use up more > initial space, though I expect the situations where a V8::EntryScope are > created and *never* used are rare? > > I am happy to make this contribution, but want to validate I'm not missing > some subtlety, and wanted to generally ask for permission before going > through the process! I expect this would be generally useful for other > lambda-like use cases such as edge functions, Cloudflare Workers, etc. > > My intended implementation would: > * have DetachableVector be backed by an absl::InlinedVector of size > kMinimumCapacity (8) > * Optional?: have minimum capacity controlled by compile-time flag (could > be default 0 and not inline anything!) > > Thanks! > > Konnor > > > -- -- v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/b7d24fef-c4a1-43f1-9d92-320efaa5b0f2n%40googlegroups.com.