good morning!!!!

Skip to content
Snippets Groups Projects
This project is mirrored from https://github.com/nhooyr/websocket. Pull mirroring updated .
  1. Apr 07, 2024
  2. Apr 05, 2024
  3. Mar 07, 2024
  4. Mar 05, 2024
  5. Feb 26, 2024
    • Grigorii Khvatskii's avatar
      Fix unaligned load error on 32-bit architectures · 4c273310
      Grigorii Khvatskii authored
      On some 32-bit architectures, 64-bit atomic operations panic when the
      value is not aligned properly.
      
      In this package, this causes netConn operations to panic when compiling
      with GOARCH=386, since netConn does atomic operations with int64 values
      in the netConn struct (namely, with readExpired and writeExpired).
      
      This commit fixes this by moving readExpired and writeExpired to the
      beginning of the struct, which makes them properly aligned.
      4c273310
  6. Feb 22, 2024
  7. Oct 26, 2023
    • Anmol Sethi's avatar
      ci/fmt.sh: Error if changes on CI · f4e61e5a
      Anmol Sethi authored
    • Anmol Sethi's avatar
    • Anmol Sethi's avatar
      wsjson: Extend benchmark with multiple sizes · 0596e7a0
      Anmol Sethi authored
      [qrvnl@dios ~/src/websocket] 130$ go test -bench=. ./wsjson/
      goos: linux
      goarch: amd64
      pkg: nhooyr.io/websocket/wsjson
      cpu: 12th Gen Intel(R) Core(TM) i5-1235U
      BenchmarkJSON/json.Encoder/8-12         14041426            72.59 ns/op  110.21 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/16-12        13936426            86.99 ns/op  183.92 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/32-12        11416401           115.3 ns/op   277.59 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/128-12        4600574           264.7 ns/op   483.55 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/256-12        2710398           433.9 ns/op   590.06 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/512-12        1588930           717.3 ns/op   713.82 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/1024-12        823138          1484 ns/op     689.80 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/2048-12        402823          2875 ns/op     712.32 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/4096-12        213926          5602 ns/op     731.14 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/8192-12         92864         11281 ns/op     726.19 MB/s          16 B/op          1 allocs/op
      BenchmarkJSON/json.Encoder/16384-12        39318         29203 ns/op     561.04 MB/s          19 B/op          1 allocs/op
      BenchmarkJSON/json.Marshal/8-12         10768671           114.5 ns/op    69.89 MB/s          48 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/16-12        10140996           113.9 ns/op   140.51 MB/s          64 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/32-12         9211780           121.6 ns/op   263.06 MB/s          64 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/128-12        4632796           264.2 ns/op   484.53 MB/s         224 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/256-12        2441511           473.5 ns/op   540.65 MB/s         432 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/512-12        1298788           896.2 ns/op   571.27 MB/s         912 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/1024-12        602084          1866 ns/op     548.83 MB/s        1808 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/2048-12        341151          3817 ns/op     536.61 MB/s        3474 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/4096-12        175594          7034 ns/op     582.32 MB/s        6548 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/8192-12         83222         15023 ns/op     545.30 MB/s       13591 B/op          2 allocs/op
      BenchmarkJSON/json.Marshal/16384-12        33087         39348 ns/op     416.39 MB/s       27304 B/op          2 allocs/op
      PASS
      ok      nhooyr.io/websocket/wsjson  32.934s
    • Anmol Sethi's avatar
    • Anmol Sethi's avatar
      ci/bench.sh: Don't profile by default · e25d9681
      Anmol Sethi authored
    • Anmol Sethi's avatar
      wsjson: Add json.Encoder vs json.Marshal benchmark · d34e5d4b
      Anmol Sethi authored
      json.Encoder is 42% faster than json.Marshal thanks to the memory reuse.
      
      goos: linux
      goarch: amd64
      pkg: nhooyr.io/websocket/wsjson
      cpu: 12th Gen Intel(R) Core(TM) i5-1235U
      BenchmarkJSON/json.Encoder-12            3517579           340.2 ns/op        24 B/op          1 allocs/op
      BenchmarkJSON/json.Marshal-12            2374086           484.3 ns/op       728 B/op          2 allocs/op
      
      Closes #409
    • Anmol Sethi's avatar
      ci/bench.sh: Install QEMU on CI · ecf7dec4
      Anmol Sethi authored
    • Anmol Sethi's avatar
    • Anmol Sethi's avatar
      mask_arm64.s: Cleanup · 369d6416
      Anmol Sethi authored
    • Anmol Sethi's avatar
    • Anmol Sethi's avatar
      mask_amd64.sh: Cleanup · 367743dc
      Anmol Sethi authored
    • Anmol Sethi's avatar
      mask_amd64.s: Minor improvements · 3f8c9e07
      Anmol Sethi authored
    • Anmol Sethi's avatar
      mask_amd64.s: Remove AVX2 fully · cb7509ab
      Anmol Sethi authored
    • Anmol Sethi's avatar
    • Anmol Sethi's avatar
    • Anmol Sethi's avatar
      mask_asm.go: Disable AVX2 · f5397ae3
      Anmol Sethi authored
      Slower for some reason than just SIMD.
      
      Also no dependency on cpu package is nice.
    • Anmol Sethi's avatar
      Refactor and compile masking code again · cda2170e
      Anmol Sethi authored
    • wdvxdr's avatar
      mask.go: Use SIMD masking for amd64 and arm64 · 5df0303d
      wdvxdr authored
      goos: windows
      goarch: amd64
      pkg: nhooyr.io/websocket
      cpu: Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz
      Benchmark_mask/2/basic-8         	425339004	         2.795 ns/op	 715.66 MB/s
      Benchmark_mask/2/nhooyr-8        	379937766	         3.186 ns/op	 627.78 MB/s
      Benchmark_mask/2/gorilla-8       	392164167	         3.071 ns/op	 651.24 MB/s
      Benchmark_mask/2/gobwas-8        	310037222	         3.880 ns/op	 515.46 MB/s
      Benchmark_mask/3/basic-8         	321408024	         3.806 ns/op	 788.32 MB/s
      Benchmark_mask/3/nhooyr-8        	350726338	         3.478 ns/op	 862.58 MB/s
      Benchmark_mask/3/gorilla-8       	332217727	         3.634 ns/op	 825.43 MB/s
      Benchmark_mask/3/gobwas-8        	247376214	         4.886 ns/op	 614.01 MB/s
      Benchmark_mask/4/basic-8         	261182472	         4.582 ns/op	 872.91 MB/s
      Benchmark_mask/4/nhooyr-8        	381830712	         3.262 ns/op	1226.05 MB/s
      Benchmark_mask/4/gorilla-8       	272616304	         4.395 ns/op	 910.04 MB/s
      Benchmark_mask/4/gobwas-8        	204574558	         5.855 ns/op	 683.19 MB/s
      Benchmark_mask/8/basic-8         	191330037	         6.162 ns/op	1298.24 MB/s
      Benchmark_mask/8/nhooyr-8        	369694992	         3.285 ns/op	2435.65 MB/s
      Benchmark_mask/8/gorilla-8       	175388466	         6.743 ns/op	1186.48 MB/s
      Benchmark_mask/8/gobwas-8        	241719933	         4.886 ns/op	1637.45 MB/s
      Benchmark_mask/16/basic-8        	100000000	        10.92 ns/op	1464.83 MB/s
      Benchmark_mask/16/nhooyr-8       	272565096	         4.436 ns/op	3606.98 MB/s
      Benchmark_mask/16/gorilla-8      	100000000	        11.20 ns/op	1428.53 MB/s
      Benchmark_mask/16/gobwas-8       	221356798	         5.405 ns/op	2960.45 MB/s
      Benchmark_mask/32/basic-8        	61476984	        20.40 ns/op	1568.80 MB/s
      Benchmark_mask/32/nhooyr-8       	238665572	         5.050 ns/op	6337.22 MB/s
      Benchmark_mask/32/gorilla-8      	100000000	        12.09 ns/op	2647.28 MB/s
      Benchmark_mask/32/gobwas-8       	186077235	         6.477 ns/op	4940.36 MB/s
      Benchmark_mask/128/basic-8       	14629720	        80.90 ns/op	1582.19 MB/s
      Benchmark_mask/128/nhooyr-8      	181241968	         6.565 ns/op	19497.98 MB/s
      Benchmark_mask/128/gorilla-8     	68308342	        16.76 ns/op	7639.37 MB/s
      Benchmark_mask/128/gobwas-8      	94582026	        12.97 ns/op	9872.11 MB/s
      Benchmark_mask/512/basic-8       	 3921001	       305.6 ns/op	1675.55 MB/s
      Benchmark_mask/512/nhooyr-8      	123102199	         9.721 ns/op	52669.11 MB/s
      Benchmark_mask/512/gorilla-8     	32355914	        38.18 ns/op	13411.43 MB/s
      Benchmark_mask/512/gobwas-8      	31528501	        37.80 ns/op	13544.37 MB/s
      Benchmark_mask/4096/basic-8      	  491804	      2381 ns/op	1720.39 MB/s
      Benchmark_mask/4096/nhooyr-8     	26159691	        46.98 ns/op	87187.73 MB/s
      Benchmark_mask/4096/gorilla-8    	 4898440	       243.6 ns/op	16817.89 MB/s
      Benchmark_mask/4096/gobwas-8     	 4336398	       277.2 ns/op	14776.40 MB/s
      Benchmark_mask/16384/basic-8     	  113842	      9623 ns/op	1702.66 MB/s
      Benchmark_mask/16384/nhooyr-8    	 8088847	       154.5 ns/op	106058.18 MB/s
      Benchmark_mask/16384/gorilla-8   	 1282993	       933.6 ns/op	17549.90 MB/s
      Benchmark_mask/16384/gobwas-8    	  997347	      1086 ns/op	15093.49 MB/s
      
      We're about 4-5x faster then gorilla now.
Loading