From c975e5944b1e14ffcb5922eccc5f2152be206969 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Tue, 29 Aug 2023 10:48:20 +0200 Subject: [PATCH] DPL: fix performance regression when using output proxy Enabling the early forwarding for any output proxy was actually a bad idea. The early forwarding triggers a Copy, which has a much larger overhead, even in the case it's shallow. This makes sure that the original behavior is back: early forwarding is never enabled for the last device in the chain. --- Framework/Core/src/DataProcessingDevice.cxx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Framework/Core/src/DataProcessingDevice.cxx b/Framework/Core/src/DataProcessingDevice.cxx index 760a91a1642b7..e6b3f0b2cd490 100644 --- a/Framework/Core/src/DataProcessingDevice.cxx +++ b/Framework/Core/src/DataProcessingDevice.cxx @@ -1070,11 +1070,6 @@ void DataProcessingDevice::fillContext(DataProcessorContext& context, DeviceCont } auto decideEarlyForward = [&context, &spec, this]() -> bool { - // There is nothing produced by this device, so we can forward early - // because this is a proxy. - if (spec.forwards.empty() == false && spec.outputs.empty() == true) { - return true; - } /// We must make sure there is no optional /// if we want to optimize the forwarding bool canForwardEarly = (spec.forwards.empty() == false) && mProcessingPolicies.earlyForward != EarlyForwardPolicy::NEVER;