@@ -32,46 +32,6 @@ import (
3232
3333var be = binary .BigEndian
3434
35- // Global pools for page work items and results - optimized for GC
36- var (
37- pageWorkItemPool = sync.Pool {New : func () any { return & pageWorkItem {} }}
38- pageResultPool = sync.Pool {New : func () any { return & pageResult {} }}
39- )
40-
41- func getPageWorkItem () * pageWorkItem { return pageWorkItemPool .Get ().(* pageWorkItem ) }
42- func putPageWorkItem (item * pageWorkItem ) {
43- if item == nil {
44- return
45- }
46- item .seq = 0
47- item .uncompressedData = item .uncompressedData [:0 ]
48- pageWorkItemPool .Put (item )
49- }
50-
51- func getPageResult () * pageResult { return pageResultPool .Get ().(* pageResult ) }
52- func putPageResult (r * pageResult ) {
53- r .seq = 0
54- r .data = r .data [:0 ]
55- pageResultPool .Put (r )
56- }
57-
58- func drainResultCh (ch chan * pageResult ) {
59- for {
60- select {
61- case r := <- ch :
62- putPageResult (r )
63- default :
64- return
65- }
66- }
67- }
68-
69- func drainPendingResults (m map [int ]* pageResult ) {
70- for _ , r := range m {
71- putPageResult (r )
72- }
73- }
74-
7535func GetFromPage (key , compressedPage []byte , compressionBuf []byte , compressionEnabled bool ) (v []byte , compressionBufOut []byte ) {
7636 var err error
7737 var page []byte
@@ -619,3 +579,43 @@ func growslice(b []byte, wantLength int) []byte {
619579 }
620580 return make ([]byte , wantLength )
621581}
582+
583+ // Global pools for page work items and results - optimized for GC
584+ var (
585+ pageWorkItemPool = sync.Pool {New : func () any { return & pageWorkItem {} }}
586+ pageResultPool = sync.Pool {New : func () any { return & pageResult {} }}
587+ )
588+
589+ func getPageWorkItem () * pageWorkItem { return pageWorkItemPool .Get ().(* pageWorkItem ) }
590+ func putPageWorkItem (item * pageWorkItem ) {
591+ if item == nil {
592+ return
593+ }
594+ item .seq = 0
595+ item .uncompressedData = item .uncompressedData [:0 ]
596+ pageWorkItemPool .Put (item )
597+ }
598+
599+ func getPageResult () * pageResult { return pageResultPool .Get ().(* pageResult ) }
600+ func putPageResult (r * pageResult ) {
601+ r .seq = 0
602+ r .data = r .data [:0 ]
603+ pageResultPool .Put (r )
604+ }
605+
606+ func drainResultCh (ch chan * pageResult ) {
607+ for {
608+ select {
609+ case r := <- ch :
610+ putPageResult (r )
611+ default :
612+ return
613+ }
614+ }
615+ }
616+
617+ func drainPendingResults (m map [int ]* pageResult ) {
618+ for _ , r := range m {
619+ putPageResult (r )
620+ }
621+ }
0 commit comments