Kobe Housen 
								
							 
						 
						
							
							
							
							
								
							
							
								8b460bc60f 
								
							 
						 
						
							
							
								
								Use make size hint when copying channels in Nick()  
							
							 
							
							... 
							
							
							
							70% faster when using a high number of channels
Old performance
```
$ go test ./state -bench=.
goos: linux
goarch: amd64
pkg: github.com/fluffle/goirc/state
cpu: AMD Ryzen Threadripper PRO 3945WX 12-Cores
BenchmarkNickSingleChan-24      15465226                76.35 ns/op
BenchmarkNickManyChan-24            5738            195721 ns/op
PASS
ok      github.com/fluffle/goirc/state  2.433s
```
new performance
```
$ go test ./state -bench=.
goos: linux
goarch: amd64
pkg: github.com/fluffle/goirc/state
cpu: AMD Ryzen Threadripper PRO 3945WX 12-Cores
BenchmarkNickSingleChan-24      15022640                79.13 ns/op
BenchmarkNickManyChan-24           10000            115104 ns/op
PASS
ok      github.com/fluffle/goirc/state  2.456s
``` 
							
						 
						
							2023-11-17 12:58:34 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								08c1bcf174 
								
							 
						 
						
							
							
								
								Fix panic when String is called on nil mode pointers.  Fixes   #98 .  
							
							 
							
							
							
						 
						
							2018-09-06 22:23:59 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								47162eb0b8 
								
							 
						 
						
							
							
								
								Run gofmt to keep people happy!  
							
							 
							
							
							
						 
						
							2018-09-06 22:15:14 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								a7abc67ac2 
								
							 
						 
						
							
							
								
								Hold state tracker lock for Me(). Fixes data race panic.  
							
							 
							
							
							
						 
						
							2017-10-31 21:38:46 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								5cf08f7e9c 
								
							 
						 
						
							
							
								
								Remove race test in state tracker, go1.5 broke it.  
							
							 
							
							
							
						 
						
							2015-12-12 19:41:36 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									kidanger 
								
							 
						 
						
							
							
							
							
								
							
							
								ce963dc793 
								
							 
						 
						
							
							
								
								fix gmock url  
							
							 
							
							
							
						 
						
							2015-06-13 10:43:59 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								d11d209dcd 
								
							 
						 
						
							
							
								
								Generate new tracker mock.  
							
							 
							
							
							
						 
						
							2014-12-31 17:50:03 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								ed6eb6115f 
								
							 
						 
						
							
							
								
								Race test changes.  
							
							 
							
							
							
						 
						
							2014-12-31 17:37:08 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								c5830d598f 
								
							 
						 
						
							
							
								
								Merge branch 'state-races' into state-copy  
							
							 
							
							... 
							
							
							
							Test that races found in old code are no longer found in new code. 
							
						 
						
							2014-12-31 17:32:15 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								36e4aeb603 
								
							 
						 
						
							
							
								
								An attempt to trigger data races in the state tracker.  
							
							 
							
							
							
						 
						
							2014-12-31 17:31:50 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								f3c49069c0 
								
							 
						 
						
							
							
								
								The great state tracker privatisation 3/3: tracker.  
							
							 
							
							
							
						 
						
							2014-12-31 13:17:46 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								4dd8bc72d5 
								
							 
						 
						
							
							
								
								The great state tracker privatisation 2/3: nicks.  
							
							 
							
							
							
						 
						
							2014-12-31 13:17:28 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								bffe946388 
								
							 
						 
						
							
							
								
								The great state tracker privatisation 1/3: channels.  
							
							 
							
							
							
						 
						
							2014-12-31 13:17:11 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								aff8b79dda 
								
							 
						 
						
							
							
								
								state/channel: canonicalise order of returned nicks  
							
							 
							
							
							
						 
						
							2014-05-20 20:57:04 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bee 
								
							 
						 
						
							
							
							
							
								
							
							
								9f1f64cb09 
								
							 
						 
						
							
							
								
								Merge pull request  #42  from StalkR/tracker  
							
							 
							
							... 
							
							
							
							state/tracker_test: remove undefined init 
							
						 
						
							2014-05-20 20:44:18 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									StalkR 
								
							 
						 
						
							
							
							
							
								
							
							
								74716ceb70 
								
							 
						 
						
							
							
								
								state/tracker_test: remove undefined init  
							
							 
							
							
							
						 
						
							2014-05-15 13:28:57 +02:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									StalkR 
								
							 
						 
						
							
							
							
							
								
							
							
								89bcd2b78c 
								
							 
						 
						
							
							
								
								state/nick: canonicalise the order of channels returned (map iteration is random)  
							
							 
							
							
							
						 
						
							2014-05-15 13:23:05 +02:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								5bb0c8278d 
								
							 
						 
						
							
							
								
								Minimally invasive change to put logging behind a user-replaceable interface.  
							
							 
							
							... 
							
							
							
							This could probably be done better, and there are probably awful caveats
and hidden gotchas with this approach. I REGRET NOTHING. 
							
						 
						
							2013-09-27 22:19:40 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								45d7b3317f 
								
							 
						 
						
							
							
								
								Remove state.StateTracker stutter, hide it in Conn.  
							
							 
							
							
							
						 
						
							2013-02-16 11:29:56 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								ca46884c72 
								
							 
						 
						
							
							
								
								Remove embedded logger from state tracker. Hmmmm.  
							
							 
							
							
							
						 
						
							2013-01-23 22:33:01 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									StalkR 
								
							 
						 
						
							
							
							
							
								
							
							
								68005e1845 
								
							 
						 
						
							
							
								
								state: parse +r/+Z channel modes  
							
							 
							
							
							
						 
						
							2013-01-10 22:22:19 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bee 
								
							 
						 
						
							
							
							
							
								
							
							
								a4028ee669 
								
							 
						 
						
							
							
								
								Merge pull request  #16  from StalkR/bot  
							
							 
							
							... 
							
							
							
							state: nick: support for Bot mode (+B) 
							
						 
						
							2013-01-06 11:21:14 -08:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									StalkR 
								
							 
						 
						
							
							
							
							
								
							
							
								2cc4e94acb 
								
							 
						 
						
							
							
								
								state: nick: add Channels/ChannelsStr accessors to get channels a nick is on  
							
							 
							
							
							
						 
						
							2013-01-06 20:13:06 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									StalkR 
								
							 
						 
						
							
							
							
							
								
							
							
								4962b26ca9 
								
							 
						 
						
							
							
								
								state: nick: support for Bot mode (+B)  
							
							 
							
							
							
						 
						
							2013-01-06 19:52:11 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									StalkR 
								
							 
						 
						
							
							
							
							
								
							
							
								eb92a84e96 
								
							 
						 
						
							
							
								
								state: channel: add Nicks() and NicksStr() accessors for nicks on channel  
							
							 
							
							
							
						 
						
							2013-01-06 19:29:53 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								c85f891c6b 
								
							 
						 
						
							
							
								
								Bah, dsymonds moved gomock again.  
							
							 
							
							
							
						 
						
							2012-06-26 11:20:57 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								3387f6fb99 
								
							 
						 
						
							
							
								
								Correct import path.  
							
							 
							
							
							
						 
						
							2012-02-03 23:45:41 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								01d58fc748 
								
							 
						 
						
							
							
								
								Update weekly to reflect the new location of gomock.  
							
							 
							
							
							
						 
						
							2012-02-03 23:13:00 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								e0a5a57fe1 
								
							 
						 
						
							
							
								
								Merge branch 'master' into weekly  
							
							 
							
							... 
							
							
							
							Conflicts:
	client/connection.go  # MERGED
	event/registry.go     # DELETED
	logging/mock_test.go  # DELETED 
							
						 
						
							2011-11-13 14:13:55 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								4e4c4b6798 
								
							 
						 
						
							
							
								
								Migrate to split logging pkg.  
							
							 
							
							
							
						 
						
							2011-11-13 14:02:12 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								81eb9ee3df 
								
							 
						 
						
							
							
								
								gofix weekly fixes for state.  
							
							 
							
							
							
						 
						
							2011-11-13 13:32:53 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								69d52270b6 
								
							 
						 
						
							
							
								
								Convert state tracker to use gomock logging for tests.  
							
							 
							
							
							
						 
						
							2011-11-05 12:22:04 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								d0f0175d7f 
								
							 
						 
						
							
							
								
								Oops. Missed String() from interface.  
							
							 
							
							
							
						 
						
							2011-11-05 09:30:32 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								b1037b2603 
								
							 
						 
						
							
							
								
								Add String() method for stateTracker.  
							
							 
							
							
							
						 
						
							2011-11-05 06:06:59 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								fdba74e8c0 
								
							 
						 
						
							
							
								
								Shave the yaks in state's tests.  
							
							 
							
							
							
						 
						
							2011-11-05 06:06:40 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								cfffcf2a85 
								
							 
						 
						
							
							
								
								Add a method to wipe a state tracker clean.  
							
							 
							
							
							
						 
						
							2011-11-05 02:25:25 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								60cd5b975f 
								
							 
						 
						
							
							
								
								Test Channel.ParseModes().  
							
							 
							
							
							
						 
						
							2011-11-03 04:15:12 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								2a6f19dc83 
								
							 
						 
						
							
							
								
								Start of channel tests.  
							
							 
							
							
							
						 
						
							2011-11-03 03:12:32 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								b88983ceaf 
								
							 
						 
						
							
							
								
								Test Nick.ParseModes().  
							
							 
							
							
							
						 
						
							2011-11-03 03:01:50 +00:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								75112d67e2 
								
							 
						 
						
							
							
								
								More nick tests.  
							
							 
							
							
							
						 
						
							2011-10-27 18:43:34 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								1c39dbecbb 
								
							 
						 
						
							
							
								
								Remove extraneous logging level setting.  
							
							 
							
							
							
						 
						
							2011-10-27 18:43:08 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								748db6b5d2 
								
							 
						 
						
							
							
								
								Test for dissociation, also ensure both nick and channel passed to {A,Di}ssociate are currently tracked.  
							
							 
							
							
							
						 
						
							2011-10-27 17:54:23 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								47dd5b3430 
								
							 
						 
						
							
							
								
								We need to be able to get at ChanPrivs easily.  
							
							 
							
							
							
						 
						
							2011-10-27 17:03:01 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								2603e0984c 
								
							 
						 
						
							
							
								
								Test nick <-> channel association.  
							
							 
							
							
							
						 
						
							2011-10-27 16:55:33 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								93508c79f1 
								
							 
						 
						
							
							
								
								Similar nick <-> channel dissociation tests in DelChannel().  
							
							 
							
							
							
						 
						
							2011-10-27 16:41:56 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								8771f1db77 
								
							 
						 
						
							
							
								
								Test nick<->channel dissociation in DelNick().  
							
							 
							
							
							
						 
						
							2011-10-27 16:04:45 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								6ded98b9e5 
								
							 
						 
						
							
							
								
								Moar testing and updates.  
							
							 
							
							
							
						 
						
							2011-10-22 23:58:06 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								1fbd0a8b17 
								
							 
						 
						
							
							
								
								Switch to using and propagating logger.  
							
							 
							
							
							
						 
						
							2011-10-22 23:57:22 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								7be7e79c78 
								
							 
						 
						
							
							
								
								Oops, missed a bit.  
							
							 
							
							
							
						 
						
							2011-10-20 00:23:54 +01:00  
						
						
							 
							
							
							
								 
							 
							
							
								 
							 
							
						 
					 
				
					
						
							
								
								
									 
									Alex Bramley 
								
							 
						 
						
							
							
							
							
								
							
							
								111a23d87c 
								
							 
						 
						
							
							
								
								Epic refactor of the refactor.  
							
							 
							
							
							
						 
						
							2011-10-20 00:10:33 +01:00