Replace Python numerical kernels with native C execution
This commit is contained in:
1 parent
48da6be21c
commit
3b38f73fe0
227 files changed
+16801
-75499
No files matched your search
@@ -27,46 +27,6 @@ def profiling_mode(mode: str):
|
||||
|
||||
|
||||
class SimulationPerformanceTests(unittest.TestCase):
|
||||
def test_off_mode_decorators_return_original_callables(self) -> None:
|
||||
with profiling_mode("off") as module:
|
||||
def phase_function(value: int) -> int:
|
||||
return value + 1
|
||||
|
||||
def property_function(value: int) -> int:
|
||||
return value * 2
|
||||
|
||||
self.assertIs(
|
||||
module.profile_phase("phase")(phase_function),
|
||||
phase_function,
|
||||
)
|
||||
self.assertIs(
|
||||
module.profile_phase("phase", minimum_mode="off")(phase_function),
|
||||
phase_function,
|
||||
)
|
||||
self.assertIs(
|
||||
module.profile_property("property")(property_function),
|
||||
property_function,
|
||||
)
|
||||
self.assertIs(
|
||||
module.profile_property(
|
||||
"property",
|
||||
minimum_mode="off",
|
||||
)(property_function),
|
||||
property_function,
|
||||
)
|
||||
|
||||
with module.profile_run() as trace:
|
||||
self.assertEqual(phase_function(2), 3)
|
||||
|
||||
self.assertEqual(
|
||||
trace.snapshot(),
|
||||
{
|
||||
"mode": "off",
|
||||
"phases": {},
|
||||
"properties": {},
|
||||
"propertyOutermostNs": 0,
|
||||
},
|
||||
)
|
||||
|
||||
def test_standard_mode_records_nested_inclusive_and_self_time(self) -> None:
|
||||
with profiling_mode("standard") as module:
|
||||
@@ -134,94 +94,8 @@ class SimulationPerformanceTests(unittest.TestCase):
|
||||
self.assertEqual(snapshot["phases"]["manual"]["inclusiveNs"], 10)
|
||||
self.assertEqual(snapshot["phases"]["simulation.total"]["selfNs"], 20)
|
||||
|
||||
def test_nested_properties_only_add_outermost_time_once(self) -> None:
|
||||
with profiling_mode("standard") as module:
|
||||
class TestMedium:
|
||||
name = "TestMedium"
|
||||
|
||||
@module.profile_property("inner", minimum_mode="standard")
|
||||
def inner(self) -> float:
|
||||
return 1.0
|
||||
|
||||
@module.profile_property("outer", minimum_mode="standard")
|
||||
def outer(self) -> float:
|
||||
return self.inner()
|
||||
|
||||
medium = TestMedium()
|
||||
clock = iter((0, 10, 20, 30, 50, 80))
|
||||
with patch.object(module, "perf_counter_ns", side_effect=clock):
|
||||
with module.profile_run() as trace:
|
||||
self.assertEqual(medium.outer(), 1.0)
|
||||
|
||||
snapshot = trace.snapshot()
|
||||
outer = snapshot["properties"]["semantic.TestMedium.outer"]
|
||||
inner = snapshot["properties"]["semantic.TestMedium.inner"]
|
||||
self.assertEqual(outer["inclusiveNs"], 40)
|
||||
self.assertEqual(outer["selfNs"], 30)
|
||||
self.assertEqual(inner["inclusiveNs"], 10)
|
||||
self.assertEqual(snapshot["propertyOutermostNs"], 40)
|
||||
|
||||
def test_audit_resets_exact_input_shadow_and_records_iterations_and_cache(self) -> None:
|
||||
with profiling_mode("audit") as module:
|
||||
class TestMedium:
|
||||
name = "AuditMedium"
|
||||
|
||||
@module.profile_property("inverse", track_cache=True)
|
||||
@lru_cache(maxsize=4)
|
||||
def inverse(self, value: float) -> float:
|
||||
module.record_property_iterations(
|
||||
"inverse",
|
||||
3 if value == 1.0 else 4,
|
||||
value == 1.0,
|
||||
)
|
||||
return value * 2.0
|
||||
|
||||
medium = TestMedium()
|
||||
|
||||
@module.profile_phase("closure", reset_property_shadow=True)
|
||||
def closure() -> None:
|
||||
medium.inverse(1.0)
|
||||
medium.inverse(1.0)
|
||||
medium.inverse(2.0)
|
||||
|
||||
with module.profile_run() as trace:
|
||||
closure()
|
||||
closure()
|
||||
|
||||
metric = trace.snapshot()["properties"][
|
||||
"semantic.AuditMedium.inverse"
|
||||
]
|
||||
self.assertEqual(metric["calls"], 6)
|
||||
self.assertEqual(metric["exactInputUnique"], 4)
|
||||
self.assertEqual(metric["exactInputRepeats"], 2)
|
||||
self.assertEqual(metric["iterationCalls"], 2)
|
||||
self.assertEqual(metric["iterationTotal"], 7)
|
||||
self.assertEqual(metric["iterationMax"], 4)
|
||||
self.assertEqual(metric["iterationConverged"], 1)
|
||||
self.assertEqual(metric["iterationNonconverged"], 1)
|
||||
self.assertEqual(metric["cacheLookups"], 6)
|
||||
self.assertEqual(metric["cacheHits"], 4)
|
||||
self.assertEqual(metric["cacheMisses"], 2)
|
||||
|
||||
self.assertTrue(callable(medium.inverse.cache_clear))
|
||||
self.assertTrue(callable(medium.inverse.cache_info))
|
||||
self.assertTrue(callable(medium.inverse.cache_parameters))
|
||||
medium.inverse.cache_clear()
|
||||
self.assertEqual(medium.inverse.cache_info().currsize, 0)
|
||||
|
||||
def test_audit_minimum_decorator_is_absent_in_standard_mode(self) -> None:
|
||||
with profiling_mode("standard") as module:
|
||||
def kernel(value: float) -> float:
|
||||
return value
|
||||
|
||||
self.assertIs(
|
||||
module.profile_property(
|
||||
"kernel",
|
||||
layer="kernel",
|
||||
minimum_mode="audit",
|
||||
)(kernel),
|
||||
kernel,
|
||||
)
|
||||
|
||||
def test_async_profile_runs_are_context_isolated(self) -> None:
|
||||
with profiling_mode("standard") as module:
|
||||
@@ -246,3 +120,12 @@ class SimulationPerformanceTests(unittest.TestCase):
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
class NativeOrchestrationPerformanceTests(unittest.TestCase):
|
||||
def test_off_mode_keeps_the_original_phase_callable(self):
|
||||
with profiling_mode('off') as module:
|
||||
def work(): return 1
|
||||
self.assertIs(module.profile_phase('work')(work), work)
|
||||
with module.profile_run() as trace:
|
||||
work()
|
||||
self.assertEqual(trace.snapshot(), {'mode': 'off', 'phases': {}})
|
||||
Reference in new issue
Block a user