架构微调
This commit is contained in:
+19
@@ -61,6 +61,25 @@ TEST(low_latency_pipeline_test, classifies_frequency_paint_and_render_limits_acr
|
||||
EXPECT_EQ(state.frame_sequence, 3u);
|
||||
}
|
||||
|
||||
TEST(low_latency_pipeline_test, consumer_feedback_limits_refresh_without_knowing_the_consumer_type) {
|
||||
Low_Latency_Test_Time_Source time_source;
|
||||
Low_Latency_Test_Observer observer;
|
||||
auto strategy = make_low_latency_test_strategy(time_source, observer);
|
||||
strategy.set_frequency_hz(100.0);
|
||||
strategy.set_consumer_feedback({40'000'000});
|
||||
complete_pipeline(strategy, time_source, 1, 2'000'000, 0, 3'000'000);
|
||||
auto state = strategy.state();
|
||||
EXPECT_EQ(state.limit_state, Low_Latency_Test_Strategy::Limit_State::consumer_limited);
|
||||
EXPECT_EQ(state.target_interval_ns, 10'000'000u);
|
||||
EXPECT_EQ(state.consumer_interval_ns, 40'000'000u);
|
||||
EXPECT_EQ(state.next_refresh_interval_ns, 40'000'000u);
|
||||
strategy.set_consumer_feedback({});
|
||||
state = strategy.state();
|
||||
EXPECT_EQ(state.limit_state, Low_Latency_Test_Strategy::Limit_State::frequency_limited);
|
||||
EXPECT_EQ(state.consumer_interval_ns, 0u);
|
||||
EXPECT_EQ(state.next_refresh_interval_ns, 10'000'000u);
|
||||
}
|
||||
|
||||
TEST(low_latency_pipeline_test, applies_frequency_and_equal_bottleneck_boundaries_deterministically) {
|
||||
Low_Latency_Test_Time_Source time_source;
|
||||
Low_Latency_Test_Observer observer;
|
||||
|
||||
+2
@@ -40,6 +40,7 @@ struct Low_Latency_Recorded_Observation {
|
||||
int limit_state{};
|
||||
std::uint64_t target_interval_ns{};
|
||||
std::uint64_t bottleneck_duration_ns{};
|
||||
std::uint64_t consumer_interval_ns{};
|
||||
std::uint64_t next_refresh_interval_ns{};
|
||||
std::uint64_t completed_lifecycle_count{};
|
||||
};
|
||||
@@ -74,6 +75,7 @@ struct Low_Latency_Test_Observer {
|
||||
static_cast<int>(observation.state.limit_state),
|
||||
observation.state.target_interval_ns,
|
||||
observation.state.bottleneck_duration_ns,
|
||||
observation.state.consumer_interval_ns,
|
||||
observation.state.next_refresh_interval_ns,
|
||||
observation.state.completed_lifecycle_count
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user