Replace string/hash based execution out look up for indices, 10-50% speed up in lookup code. Fix bugs calling dependent functions.

This commit is contained in:
chcurran
2021-04-20 12:04:57 -07:00
parent f4a57663fa
commit 961f2ef113
46 changed files with 12336 additions and 271 deletions
@@ -108,9 +108,15 @@ namespace ScriptCanvasTests
auto m_serializeContext = s_application->GetSerializeContext();
auto m_behaviorContext = s_application->GetBehaviorContext();
ScriptCanvasTesting::Reflect(m_serializeContext);
ScriptCanvasTesting::Reflect(m_behaviorContext);
ScriptCanvasTesting::GlobalBusTraits::Reflect(m_serializeContext);
ScriptCanvasTesting::GlobalBusTraits::Reflect(m_behaviorContext);
ScriptCanvasTesting::LocalBusTraits::Reflect(m_serializeContext);
ScriptCanvasTesting::LocalBusTraits::Reflect(m_behaviorContext);
ScriptCanvasTesting::PerformanceStressBusTraits::Reflect(m_serializeContext);
ScriptCanvasTesting::PerformanceStressBusTraits::Reflect(m_behaviorContext);
ScriptCanvasTesting::NativeHandlingOnlyBusTraits::Reflect(m_serializeContext);
ScriptCanvasTesting::NativeHandlingOnlyBusTraits::Reflect(m_behaviorContext);
ScriptCanvasTesting::TestTupleMethods::Reflect(m_behaviorContext);
::Nodes::InputMethodSharedDataSlotExampleNode::Reflect(m_serializeContext);
::Nodes::InputMethodSharedDataSlotExampleNode::Reflect(m_behaviorContext);
@@ -130,6 +130,87 @@ namespace ScriptCanvasTesting
}
}
class PerformanceStressEBusHandler
: public PerformanceStressEBus::Handler
, public AZ::BehaviorEBusHandler
{
public:
AZ_EBUS_BEHAVIOR_BINDER(
PerformanceStressEBusHandler, "{EAE36675-F06B-4755-B3A5-CEC9495DC92E}", AZ::SystemAllocator
, ForceStringCompare0
, ForceStringCompare1
, ForceStringCompare2
, ForceStringCompare3
, ForceStringCompare4
, ForceStringCompare5
, ForceStringCompare6
, ForceStringCompare7
, ForceStringCompare8
, ForceStringCompare9
);
void ForceStringCompare0() override
{
Call(FN_ForceStringCompare0);
}
void ForceStringCompare1() override
{
Call(FN_ForceStringCompare1);
}
void ForceStringCompare2() override
{
Call(FN_ForceStringCompare2);
}
void ForceStringCompare3() override
{
Call(FN_ForceStringCompare3);
}
void ForceStringCompare4() override
{
Call(FN_ForceStringCompare4);
}
void ForceStringCompare5() override
{
Call(FN_ForceStringCompare5);
}
void ForceStringCompare6() override
{
Call(FN_ForceStringCompare6);
}
void ForceStringCompare7() override
{
Call(FN_ForceStringCompare7);
}
void ForceStringCompare8() override
{
Call(FN_ForceStringCompare8);
}
void ForceStringCompare9() override
{
Call(FN_ForceStringCompare9);
}
};
void PerformanceStressBusTraits::Reflect(AZ::ReflectContext* context)
{
if (AZ::BehaviorContext* behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
{
behaviorContext->EBus<PerformanceStressEBus>("PerformanceStressEBus")
->Handler<PerformanceStressEBusHandler>()
->Event("ForceStringCompare0", &PerformanceStressEBus::Events::ForceStringCompare0)
->Event("ForceStringCompare1", &PerformanceStressEBus::Events::ForceStringCompare1)
->Event("ForceStringCompare2", &PerformanceStressEBus::Events::ForceStringCompare2)
->Event("ForceStringCompare3", &PerformanceStressEBus::Events::ForceStringCompare3)
->Event("ForceStringCompare4", &PerformanceStressEBus::Events::ForceStringCompare4)
->Event("ForceStringCompare5", &PerformanceStressEBus::Events::ForceStringCompare5)
->Event("ForceStringCompare6", &PerformanceStressEBus::Events::ForceStringCompare6)
->Event("ForceStringCompare7", &PerformanceStressEBus::Events::ForceStringCompare7)
->Event("ForceStringCompare8", &PerformanceStressEBus::Events::ForceStringCompare8)
->Event("ForceStringCompare9", &PerformanceStressEBus::Events::ForceStringCompare9)
;
}
}
class LocalEBusHandler
: public LocalEBus::Handler
, public AZ::BehaviorEBusHandler
@@ -46,6 +46,27 @@ namespace ScriptCanvasTesting
};
using GlobalEBus = AZ::EBus<GlobalBusTraits>;
class PerformanceStressBusTraits : public AZ::EBusTraits
{
public:
AZ_TYPE_INFO(PerformanceStressBusTraits, "{68AF0B81-70F4-4822-8127-AAC442D924C7}");
static void Reflect(AZ::ReflectContext* context);
virtual void ForceStringCompare0() = 0;
virtual void ForceStringCompare1() = 0;
virtual void ForceStringCompare2() = 0;
virtual void ForceStringCompare3() = 0;
virtual void ForceStringCompare4() = 0;
virtual void ForceStringCompare5() = 0;
virtual void ForceStringCompare6() = 0;
virtual void ForceStringCompare7() = 0;
virtual void ForceStringCompare8() = 0;
virtual void ForceStringCompare9() = 0;
};
using PerformanceStressEBus = AZ::EBus<PerformanceStressBusTraits>;
class LocalBusTraits : public AZ::EBusTraits
{
public:
@@ -43,7 +43,11 @@ namespace ScriptCanvasTesting
NodeableTestingLibrary::Reflect(context);
ScriptCanvasTestingNodes::BehaviorContextObjectTest::Reflect(context);
ScriptCanvasTesting::Reflect(context);
ScriptCanvasTesting::GlobalBusTraits::Reflect(context);
ScriptCanvasTesting::LocalBusTraits::Reflect(context);
ScriptCanvasTesting::PerformanceStressBusTraits::Reflect(context);
ScriptCanvasTesting::NativeHandlingOnlyBusTraits::Reflect(context);
ScriptCanvasTesting::TestTupleMethods::Reflect(context);
}
void ScriptCanvasTestingSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)