stream_response_test.go 590 B

1234567891011121314151617181920212223242526272829303132333435
  1. package stream
  2. import (
  3. "sync"
  4. "testing"
  5. "github.com/langgenius/dify-plugin-daemon/internal/utils/stream"
  6. )
  7. func BenchmarkStreamResponse(b *testing.B) {
  8. b.Run("Read", func(b *testing.B) {
  9. wg_started := sync.WaitGroup{}
  10. wg_started.Add(8)
  11. resp := stream.NewStreamResponse[int](1024)
  12. for i := 0; i < 8; i++ {
  13. go func() {
  14. wg_started.Done()
  15. for !resp.IsClosed() {
  16. resp.Write(1)
  17. }
  18. }()
  19. }
  20. // wait for the first element to be written
  21. resp.Next()
  22. b.ResetTimer()
  23. for i := 0; i < b.N; i++ {
  24. resp.Next()
  25. resp.Read()
  26. }
  27. defer resp.Close()
  28. })
  29. }