gateway_anthropic_apikey_passthrough_benchmark_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package service
  2. import "testing"
  3. func BenchmarkGatewayService_ParseSSEUsage_MessageStart(b *testing.B) {
  4. svc := &GatewayService{}
  5. data := `{"type":"message_start","message":{"usage":{"input_tokens":123,"cache_creation_input_tokens":45,"cache_read_input_tokens":6,"cached_tokens":6,"cache_creation":{"ephemeral_5m_input_tokens":20,"ephemeral_1h_input_tokens":25}}}}`
  6. b.ReportAllocs()
  7. b.ResetTimer()
  8. for i := 0; i < b.N; i++ {
  9. usage := &ClaudeUsage{}
  10. svc.parseSSEUsage(data, usage)
  11. }
  12. }
  13. func BenchmarkGatewayService_ParseSSEUsagePassthrough_MessageStart(b *testing.B) {
  14. data := `{"type":"message_start","message":{"usage":{"input_tokens":123,"cache_creation_input_tokens":45,"cache_read_input_tokens":6,"cached_tokens":6,"cache_creation":{"ephemeral_5m_input_tokens":20,"ephemeral_1h_input_tokens":25}}}}`
  15. b.ReportAllocs()
  16. b.ResetTimer()
  17. for i := 0; i < b.N; i++ {
  18. usage := &ClaudeUsage{}
  19. parseSSEUsagePassthrough(data, usage)
  20. }
  21. }
  22. func BenchmarkGatewayService_ParseSSEUsage_MessageDelta(b *testing.B) {
  23. svc := &GatewayService{}
  24. data := `{"type":"message_delta","usage":{"output_tokens":456,"cache_creation_input_tokens":30,"cache_read_input_tokens":7,"cached_tokens":7,"cache_creation":{"ephemeral_5m_input_tokens":10,"ephemeral_1h_input_tokens":20}}}`
  25. b.ReportAllocs()
  26. b.ResetTimer()
  27. for i := 0; i < b.N; i++ {
  28. usage := &ClaudeUsage{}
  29. svc.parseSSEUsage(data, usage)
  30. }
  31. }
  32. func BenchmarkGatewayService_ParseSSEUsagePassthrough_MessageDelta(b *testing.B) {
  33. data := `{"type":"message_delta","usage":{"output_tokens":456,"cache_creation_input_tokens":30,"cache_read_input_tokens":7,"cached_tokens":7,"cache_creation":{"ephemeral_5m_input_tokens":10,"ephemeral_1h_input_tokens":20}}}`
  34. b.ReportAllocs()
  35. b.ResetTimer()
  36. for i := 0; i < b.N; i++ {
  37. usage := &ClaudeUsage{}
  38. parseSSEUsagePassthrough(data, usage)
  39. }
  40. }
  41. func BenchmarkParseClaudeUsageFromResponseBody(b *testing.B) {
  42. body := []byte(`{"id":"msg_123","type":"message","usage":{"input_tokens":123,"output_tokens":456,"cache_creation_input_tokens":45,"cache_read_input_tokens":6,"cached_tokens":6,"cache_creation":{"ephemeral_5m_input_tokens":20,"ephemeral_1h_input_tokens":25}}}`)
  43. b.ReportAllocs()
  44. b.ResetTimer()
  45. for i := 0; i < b.N; i++ {
  46. _ = parseClaudeUsageFromResponseBody(body)
  47. }
  48. }