Skip to content

Conversation

@JakobVogelsang
Copy link
Contributor

No description provided.

@github-actions
Copy link

github-actions bot commented Nov 4, 2025

Benchmark Results

SMV Decoder Benchmarks

test smv_frame_detection ... bench:           2 ns/iter (+/- 0)

test full_smv_decode ... bench:         370 ns/iter (+/- 3)

test smv_throughput/decode_rate_kHz/4 ... bench:         375 ns/iter (+/- 1)
test smv_throughput/decode_rate_kHz/8 ... bench:         376 ns/iter (+/- 1)
test smv_throughput/decode_rate_kHz/16 ... bench:         366 ns/iter (+/- 3)


=== Validating Realistic Max (8×12) ===
Packet size: 1227 bytes
✓ Successfully decoded 1227 bytes
  Total parsed: 1227 bytes

=== Validating Stress Test (8×32) ===
Packet size: 2757 bytes
✓ Successfully decoded 2757 bytes
  Total parsed: 2757 bytes

=== SMV Packet Configurations ===
Realistic Max (8 ASDUs × 12 samples = 96 total):
  - Packet size: 1227 bytes
  - MTU utilization: 81.8%
  - ✓ Fits within Ethernet MTU

Stress Test (8 ASDUs × 32 samples = 256 total):
  - Packet size: 2757 bytes
  - MTU utilization: 183.8%
  - ⚠️  Exceeds Ethernet MTU!
=================================

test max_configurations/realistic_max_8x12 ... bench:        3873 ns/iter (+/- 55)
test max_configurations/stress_test_8x32 ... bench:        7730 ns/iter (+/- 131)


=== Comprehensive Packet Size Comparison ===
Small (1 ASDU × 8 samples = 8 total): 140 bytes
Realistic Max (8 ASDUs × 12 samples = 96 total): 1227 bytes
Stress Test (8 ASDUs × 32 samples = 256 total): 2757 bytes

Size ratios:
  - Realistic vs Small: 8.8x larger
  - Stress vs Small: 19.7x larger
  - Stress vs Realistic: 2.2x larger
===========================================

test smv_packet_comparison/small_1x8 ... bench:         357 ns/iter (+/- 0)
test smv_packet_comparison/realistic_8x12 ... bench:        4034 ns/iter (+/- 19)
test smv_packet_comparison/stress_8x32 ... bench:        7999 ns/iter (+/- 42)


GOOSE Codec Benchmarks


=== GOOSE Benchmark Packet Info ===
Total packet size: 1385 bytes
Ethernet MTU limit: ~1500 bytes
Utilization: 92.3%
===================================

test goose_frame_detection ... bench:           2 ns/iter (+/- 0)

test goose_pdu_decode ... bench:       19508 ns/iter (+/- 40)

test full_goose_decode ... bench:       19663 ns/iter (+/- 74)

test ethernet_header_encode ... bench:          28 ns/iter (+/- 0)

test goose_pdu_encode ... bench:       10829 ns/iter (+/- 41)

test goose_encode_decode_roundtrip ... bench:       30331 ns/iter (+/- 112)

test goose_data_size/encode/10 ... bench:        1407 ns/iter (+/- 11)
test goose_data_size/encode/50 ... bench:        3687 ns/iter (+/- 9)
test goose_data_size/encode/100 ... bench:        6393 ns/iter (+/- 18)
test goose_data_size/encode/150 ... bench:        8989 ns/iter (+/- 59)
test goose_data_size/encode/200 ... bench:       11214 ns/iter (+/- 48)

test goose_packet_rates/decode_rate_Hz/50 ... bench:       19533 ns/iter (+/- 640)
test goose_packet_rates/decode_rate_Hz/100 ... bench:       19596 ns/iter (+/- 51)
test goose_packet_rates/decode_rate_Hz/1000 ... bench:       19277 ns/iter (+/- 81)


@github-actions
Copy link

github-actions bot commented Nov 6, 2025

Benchmark Results

SMV Decoder Benchmarks

test full_smv_decode ... bench:         363 ns/iter (+/- 0)

test smv_throughput/decode_rate_kHz/4 ... bench:         385 ns/iter (+/- 0)
test smv_throughput/decode_rate_kHz/8 ... bench:         377 ns/iter (+/- 1)
test smv_throughput/decode_rate_kHz/16 ... bench:         384 ns/iter (+/- 1)


=== Validating Realistic Max (8×12) ===
Packet size: 1227 bytes
✓ Successfully decoded PDU
  Number of ASDUs: 8
  Simulation: false

=== Validating Stress Test (8×32) ===
Packet size: 2757 bytes
✓ Successfully decoded PDU
  Number of ASDUs: 8
  Simulation: false

=== SMV Packet Configurations ===
Realistic Max (8 ASDUs × 12 samples = 96 total):
  - Packet size: 1227 bytes
  - MTU utilization: 81.8%
  - ✓ Fits within Ethernet MTU

Stress Test (8 ASDUs × 32 samples = 256 total):
  - Packet size: 2757 bytes
  - MTU utilization: 183.8%
  - ⚠️  Exceeds Ethernet MTU!
=================================

test max_configurations/realistic_max_8x12 ... bench:        3956 ns/iter (+/- 14)
test max_configurations/stress_test_8x32 ... bench:        7630 ns/iter (+/- 98)


=== Comprehensive Packet Size Comparison ===
Small (1 ASDU × 8 samples = 8 total): 140 bytes
Realistic Max (8 ASDUs × 12 samples = 96 total): 1227 bytes
Stress Test (8 ASDUs × 32 samples = 256 total): 2757 bytes

Size ratios:
  - Realistic vs Small: 8.8x larger
  - Stress vs Small: 19.7x larger
  - Stress vs Realistic: 2.2x larger
===========================================

test smv_packet_comparison/small_1x8 ... bench:         378 ns/iter (+/- 1)
test smv_packet_comparison/realistic_8x12 ... bench:        4071 ns/iter (+/- 22)
test smv_packet_comparison/stress_8x32 ... bench:        7761 ns/iter (+/- 26)

test smv_encode/small_1x8 ... bench:         600 ns/iter (+/- 1)
test smv_encode/realistic_8x12 ... bench:        5901 ns/iter (+/- 139)
test smv_encode/stress_8x32 ... bench:       14124 ns/iter (+/- 26)


=== SMV Encoding Performance (Zero-Copy) ===
Testing zero-copy encoding with exact allocation
================================================

test smv_encode_comparison/zero_copy/small_1x8 ... bench:         611 ns/iter (+/- 5)
test smv_encode_comparison/zero_copy/realistic_8x12 ... bench:        5910 ns/iter (+/- 21)
test smv_encode_comparison/zero_copy/stress_8x32 ... bench:       13978 ns/iter (+/- 122)

test smv_roundtrip/small_1x8 ... bench:        1071 ns/iter (+/- 2)
test smv_roundtrip/realistic_8x12 ... bench:       10841 ns/iter (+/- 48)
test smv_roundtrip/stress_8x32 ... bench:       22859 ns/iter (+/- 82)


GOOSE Codec Benchmarks


=== GOOSE Benchmark Packet Info ===
Total packet size: 1385 bytes
Ethernet MTU limit: ~1500 bytes
Utilization: 92.3%
===================================

test goose_frame_detection ... bench:           2 ns/iter (+/- 0)

test goose_pdu_decode ... bench:       18747 ns/iter (+/- 400)

test full_goose_decode ... bench:       19491 ns/iter (+/- 352)

test ethernet_header_encode ... bench:          28 ns/iter (+/- 0)

test goose_pdu_encode ... bench:       10471 ns/iter (+/- 199)

test goose_encode_decode_roundtrip ... bench:       29797 ns/iter (+/- 308)

test goose_data_size/encode/10 ... bench:        1454 ns/iter (+/- 6)
test goose_data_size/encode/50 ... bench:        3678 ns/iter (+/- 14)
test goose_data_size/encode/100 ... bench:        6366 ns/iter (+/- 42)
test goose_data_size/encode/150 ... bench:        9021 ns/iter (+/- 71)
test goose_data_size/encode/200 ... bench:       11472 ns/iter (+/- 35)

test goose_packet_rates/decode_rate_Hz/50 ... bench:       19310 ns/iter (+/- 289)
test goose_packet_rates/decode_rate_Hz/100 ... bench:       19281 ns/iter (+/- 304)
test goose_packet_rates/decode_rate_Hz/1000 ... bench:       19344 ns/iter (+/- 241)


@github-actions
Copy link

github-actions bot commented Nov 6, 2025

Benchmark Results

SMV Decoder Benchmarks

test full_smv_decode ... bench:         367 ns/iter (+/- 4)

test smv_throughput/decode_rate_kHz/4 ... bench:         366 ns/iter (+/- 1)
test smv_throughput/decode_rate_kHz/8 ... bench:         383 ns/iter (+/- 1)
test smv_throughput/decode_rate_kHz/16 ... bench:         383 ns/iter (+/- 0)


=== Validating Realistic Max (8×12) ===
Packet size: 1227 bytes
✓ Successfully decoded PDU
  Number of ASDUs: 8
  Simulation: false

=== Validating Stress Test (8×32) ===
Packet size: 2757 bytes
✓ Successfully decoded PDU
  Number of ASDUs: 8
  Simulation: false

=== SMV Packet Configurations ===
Realistic Max (8 ASDUs × 12 samples = 96 total):
  - Packet size: 1227 bytes
  - MTU utilization: 81.8%
  - ✓ Fits within Ethernet MTU

Stress Test (8 ASDUs × 32 samples = 256 total):
  - Packet size: 2757 bytes
  - MTU utilization: 183.8%
  - ⚠️  Exceeds Ethernet MTU!
=================================

test max_configurations/realistic_max_8x12 ... bench:        3897 ns/iter (+/- 15)
test max_configurations/stress_test_8x32 ... bench:        7729 ns/iter (+/- 36)


=== Comprehensive Packet Size Comparison ===
Small (1 ASDU × 8 samples = 8 total): 140 bytes
Realistic Max (8 ASDUs × 12 samples = 96 total): 1227 bytes
Stress Test (8 ASDUs × 32 samples = 256 total): 2757 bytes

Size ratios:
  - Realistic vs Small: 8.8x larger
  - Stress vs Small: 19.7x larger
  - Stress vs Realistic: 2.2x larger
===========================================

test smv_packet_comparison/small_1x8 ... bench:         380 ns/iter (+/- 1)
test smv_packet_comparison/realistic_8x12 ... bench:        4082 ns/iter (+/- 19)
test smv_packet_comparison/stress_8x32 ... bench:        7674 ns/iter (+/- 54)

test smv_encode/small_1x8 ... bench:         587 ns/iter (+/- 2)
test smv_encode/realistic_8x12 ... bench:        5913 ns/iter (+/- 26)
test smv_encode/stress_8x32 ... bench:       13825 ns/iter (+/- 34)


=== SMV Encoding Performance (Zero-Copy) ===
Testing zero-copy encoding with exact allocation
================================================

test smv_encode_comparison/zero_copy/small_1x8 ... bench:         596 ns/iter (+/- 2)
test smv_encode_comparison/zero_copy/realistic_8x12 ... bench:        5968 ns/iter (+/- 17)
test smv_encode_comparison/zero_copy/stress_8x32 ... bench:       13822 ns/iter (+/- 120)

test smv_roundtrip/small_1x8 ... bench:        1106 ns/iter (+/- 4)
test smv_roundtrip/realistic_8x12 ... bench:       10707 ns/iter (+/- 50)
test smv_roundtrip/stress_8x32 ... bench:       22575 ns/iter (+/- 58)


GOOSE Codec Benchmarks


=== GOOSE Benchmark Packet Info ===
Total packet size: 1385 bytes
Ethernet MTU limit: ~1500 bytes
Utilization: 92.3%
===================================

test goose_frame_detection ... bench:           2 ns/iter (+/- 0)

test goose_pdu_decode ... bench:       19887 ns/iter (+/- 71)

test full_goose_decode ... bench:       19560 ns/iter (+/- 47)

test ethernet_header_encode ... bench:          28 ns/iter (+/- 0)

test goose_pdu_encode ... bench:       10384 ns/iter (+/- 124)

test goose_encode_decode_roundtrip ... bench:       30339 ns/iter (+/- 232)

test goose_data_size/encode/10 ... bench:        1430 ns/iter (+/- 6)
test goose_data_size/encode/50 ... bench:        3707 ns/iter (+/- 13)
test goose_data_size/encode/100 ... bench:        6467 ns/iter (+/- 18)
test goose_data_size/encode/150 ... bench:        8917 ns/iter (+/- 296)
test goose_data_size/encode/200 ... bench:       11621 ns/iter (+/- 22)

test goose_packet_rates/decode_rate_Hz/50 ... bench:       19478 ns/iter (+/- 190)
test goose_packet_rates/decode_rate_Hz/100 ... bench:       19444 ns/iter (+/- 41)
test goose_packet_rates/decode_rate_Hz/1000 ... bench:       19409 ns/iter (+/- 35)


@github-actions
Copy link

github-actions bot commented Nov 6, 2025

Benchmark Results

SMV Decoder Benchmarks

test full_smv_decode ... bench:         366 ns/iter (+/- 11)

test smv_throughput/decode_rate_kHz/4 ... bench:         388 ns/iter (+/- 1)
test smv_throughput/decode_rate_kHz/8 ... bench:         389 ns/iter (+/- 3)
test smv_throughput/decode_rate_kHz/16 ... bench:         385 ns/iter (+/- 1)


=== Validating Realistic Max (8×12) ===
Packet size: 1227 bytes
✓ Successfully decoded PDU
  Number of ASDUs: 8
  Simulation: false

=== Validating Stress Test (8×32) ===
Packet size: 2757 bytes
✓ Successfully decoded PDU
  Number of ASDUs: 8
  Simulation: false

=== SMV Packet Configurations ===
Realistic Max (8 ASDUs × 12 samples = 96 total):
  - Packet size: 1227 bytes
  - MTU utilization: 81.8%
  - ✓ Fits within Ethernet MTU

Stress Test (8 ASDUs × 32 samples = 256 total):
  - Packet size: 2757 bytes
  - MTU utilization: 183.8%
  - ⚠️  Exceeds Ethernet MTU!
=================================

test max_configurations/realistic_max_8x12 ... bench:        3959 ns/iter (+/- 207)
test max_configurations/stress_test_8x32 ... bench:        7738 ns/iter (+/- 231)


=== Comprehensive Packet Size Comparison ===
Small (1 ASDU × 8 samples = 8 total): 140 bytes
Realistic Max (8 ASDUs × 12 samples = 96 total): 1227 bytes
Stress Test (8 ASDUs × 32 samples = 256 total): 2757 bytes

Size ratios:
  - Realistic vs Small: 8.8x larger
  - Stress vs Small: 19.7x larger
  - Stress vs Realistic: 2.2x larger
===========================================

test smv_packet_comparison/small_1x8 ... bench:         367 ns/iter (+/- 1)
test smv_packet_comparison/realistic_8x12 ... bench:        4030 ns/iter (+/- 11)
test smv_packet_comparison/stress_8x32 ... bench:        7758 ns/iter (+/- 32)

test smv_encode/small_1x8 ... bench:         593 ns/iter (+/- 8)
test smv_encode/realistic_8x12 ... bench:        5794 ns/iter (+/- 43)
test smv_encode/stress_8x32 ... bench:       13828 ns/iter (+/- 135)


=== SMV Encoding Performance (Zero-Copy) ===
Testing zero-copy encoding with exact allocation
================================================

test smv_encode_comparison/zero_copy/small_1x8 ... bench:         586 ns/iter (+/- 24)
test smv_encode_comparison/zero_copy/realistic_8x12 ... bench:        5825 ns/iter (+/- 203)
test smv_encode_comparison/zero_copy/stress_8x32 ... bench:       13925 ns/iter (+/- 311)

test smv_roundtrip/small_1x8 ... bench:        1060 ns/iter (+/- 2)
test smv_roundtrip/realistic_8x12 ... bench:       10494 ns/iter (+/- 100)
test smv_roundtrip/stress_8x32 ... bench:       22628 ns/iter (+/- 774)


GOOSE Codec Benchmarks


=== GOOSE Benchmark Packet Info ===
Total packet size: 1385 bytes
Ethernet MTU limit: ~1500 bytes
Utilization: 92.3%
===================================

test goose_frame_detection ... bench:           2 ns/iter (+/- 0)

test goose_pdu_decode ... bench:       19777 ns/iter (+/- 67)

test full_goose_decode ... bench:       19230 ns/iter (+/- 233)

test ethernet_header_encode ... bench:          28 ns/iter (+/- 0)

test goose_pdu_encode ... bench:       10769 ns/iter (+/- 24)

test goose_encode_decode_roundtrip ... bench:       30760 ns/iter (+/- 681)

test goose_data_size/encode/10 ... bench:        1425 ns/iter (+/- 8)
test goose_data_size/encode/50 ... bench:        3583 ns/iter (+/- 15)
test goose_data_size/encode/100 ... bench:        6222 ns/iter (+/- 13)
test goose_data_size/encode/150 ... bench:        8699 ns/iter (+/- 25)
test goose_data_size/encode/200 ... bench:       11198 ns/iter (+/- 46)

test goose_packet_rates/decode_rate_Hz/50 ... bench:       19299 ns/iter (+/- 539)
test goose_packet_rates/decode_rate_Hz/100 ... bench:       19413 ns/iter (+/- 269)
test goose_packet_rates/decode_rate_Hz/1000 ... bench:       19222 ns/iter (+/- 234)


@JakobVogelsang JakobVogelsang merged commit cc8c59e into main Nov 6, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants