mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 17:22:26 -05:00 
			
		
		
		
	[performance] update go-structr and go-mutexes with memory usage improvements (#2909)
* update go-structr and go-mutexes with memory usage improvements * bump to go-structr v0.8.4
This commit is contained in:
		
					parent
					
						
							
								578a4e0cf5
							
						
					
				
			
			
				commit
				
					
						c06e6fb656
					
				
			
		
					 26 changed files with 1409 additions and 163 deletions
				
			
		
							
								
								
									
										48
									
								
								vendor/github.com/dolthub/maphash/hasher.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/github.com/dolthub/maphash/hasher.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| // Copyright 2022 Dolthub, Inc. | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| 
 | ||||
| package maphash | ||||
| 
 | ||||
| import "unsafe" | ||||
| 
 | ||||
| // Hasher hashes values of type K. | ||||
| // Uses runtime AES-based hashing. | ||||
| type Hasher[K comparable] struct { | ||||
| 	hash hashfn | ||||
| 	seed uintptr | ||||
| } | ||||
| 
 | ||||
| // NewHasher creates a new Hasher[K] with a random seed. | ||||
| func NewHasher[K comparable]() Hasher[K] { | ||||
| 	return Hasher[K]{ | ||||
| 		hash: getRuntimeHasher[K](), | ||||
| 		seed: newHashSeed(), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // NewSeed returns a copy of |h| with a new hash seed. | ||||
| func NewSeed[K comparable](h Hasher[K]) Hasher[K] { | ||||
| 	return Hasher[K]{ | ||||
| 		hash: h.hash, | ||||
| 		seed: newHashSeed(), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Hash hashes |key|. | ||||
| func (h Hasher[K]) Hash(key K) uint64 { | ||||
| 	// promise to the compiler that pointer | ||||
| 	// |p| does not escape the stack. | ||||
| 	p := noescape(unsafe.Pointer(&key)) | ||||
| 	return uint64(h.hash(p, h.seed)) | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue