Add Rust comparison tests for standard BSON benchmarks
Added Rust vs C comparison versions for all standard BSON micro-benchmarks: - Flat encoding/decoding (TestRustFlat*) - Deep encoding/decoding (TestRustDeep*) - Full encoding/decoding (TestRustFull*) These tests use the same test data as the standard benchmarks but explicitly compare C vs Rust implementations. Each benchmark has two versions: - *C: Uses C extension (implementation = 'c') - *Rust: Uses Rust extension (implementation = 'rust') The RustComparisonTest base class handles switching between implementations by setting/unsetting PYMONGO_USE_RUST environment variable and reloading the bson module. This provides comprehensive performance comparison data between the C and Rust BSON implementations across all standard benchmark datasets.
This commit is contained in:
parent
5dc88359d2
commit
c4cdf2c186
@ -278,6 +278,7 @@ class TestFullDecoding(BsonDecodingTest, unittest.TestCase):
|
||||
|
||||
|
||||
# RUST COMPARISON MICRO-BENCHMARKS
|
||||
# These tests compare C vs Rust implementations for the same BSON operations
|
||||
class RustComparisonTest(PerformanceTest):
|
||||
"""Base class for tests that compare C vs Rust implementations."""
|
||||
|
||||
@ -423,6 +424,94 @@ class TestRustListEncodingRust(RustListEncodingTest, unittest.TestCase):
|
||||
implementation = "rust"
|
||||
|
||||
|
||||
# Rust comparison versions of standard BSON benchmarks
|
||||
# These use the same test data as the standard benchmarks but compare C vs Rust
|
||||
|
||||
|
||||
class RustFlatEncodingTest(RustComparisonTest, BsonEncodingTest):
|
||||
"""Rust comparison for flat BSON encoding."""
|
||||
|
||||
dataset = "flat_bson.json"
|
||||
|
||||
|
||||
class TestRustFlatEncodingC(RustFlatEncodingTest, unittest.TestCase):
|
||||
implementation = "c"
|
||||
|
||||
|
||||
class TestRustFlatEncodingRust(RustFlatEncodingTest, unittest.TestCase):
|
||||
implementation = "rust"
|
||||
|
||||
|
||||
class RustFlatDecodingTest(RustComparisonTest, BsonDecodingTest):
|
||||
"""Rust comparison for flat BSON decoding."""
|
||||
|
||||
dataset = "flat_bson.json"
|
||||
|
||||
|
||||
class TestRustFlatDecodingC(RustFlatDecodingTest, unittest.TestCase):
|
||||
implementation = "c"
|
||||
|
||||
|
||||
class TestRustFlatDecodingRust(RustFlatDecodingTest, unittest.TestCase):
|
||||
implementation = "rust"
|
||||
|
||||
|
||||
class RustDeepEncodingTest(RustComparisonTest, BsonEncodingTest):
|
||||
"""Rust comparison for deep BSON encoding."""
|
||||
|
||||
dataset = "deep_bson.json"
|
||||
|
||||
|
||||
class TestRustDeepEncodingC(RustDeepEncodingTest, unittest.TestCase):
|
||||
implementation = "c"
|
||||
|
||||
|
||||
class TestRustDeepEncodingRust(RustDeepEncodingTest, unittest.TestCase):
|
||||
implementation = "rust"
|
||||
|
||||
|
||||
class RustDeepDecodingTest(RustComparisonTest, BsonDecodingTest):
|
||||
"""Rust comparison for deep BSON decoding."""
|
||||
|
||||
dataset = "deep_bson.json"
|
||||
|
||||
|
||||
class TestRustDeepDecodingC(RustDeepDecodingTest, unittest.TestCase):
|
||||
implementation = "c"
|
||||
|
||||
|
||||
class TestRustDeepDecodingRust(RustDeepDecodingTest, unittest.TestCase):
|
||||
implementation = "rust"
|
||||
|
||||
|
||||
class RustFullEncodingTest(RustComparisonTest, BsonEncodingTest):
|
||||
"""Rust comparison for full BSON encoding."""
|
||||
|
||||
dataset = "full_bson.json"
|
||||
|
||||
|
||||
class TestRustFullEncodingC(RustFullEncodingTest, unittest.TestCase):
|
||||
implementation = "c"
|
||||
|
||||
|
||||
class TestRustFullEncodingRust(RustFullEncodingTest, unittest.TestCase):
|
||||
implementation = "rust"
|
||||
|
||||
|
||||
class RustFullDecodingTest(RustComparisonTest, BsonDecodingTest):
|
||||
"""Rust comparison for full BSON decoding."""
|
||||
|
||||
dataset = "full_bson.json"
|
||||
|
||||
|
||||
class TestRustFullDecodingC(RustFullDecodingTest, unittest.TestCase):
|
||||
implementation = "c"
|
||||
|
||||
|
||||
class TestRustFullDecodingRust(RustFullDecodingTest, unittest.TestCase):
|
||||
implementation = "rust"
|
||||
|
||||
|
||||
# JSON MICRO-BENCHMARKS
|
||||
class JsonEncodingTest(MicroTest):
|
||||
def setUp(self):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user