AP: product dependency optimization (#6619)
* Initial pass at optimizing product path dependency resolution Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Add version of StripAssetPlatform that doesn't allocate or copy strings. Re-add missing test and fix up compile errors. Add benchmark test Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Change UpdateProductDependencies to directly call s_InsertProductDependencyQuery.BindAndStep Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Add test for same filename on multiple platforms Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Rework search logic to keep track of the source of a search path (source vs product) and keep track of which search matches which dependency to avoid doing another search through every product later on Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Clean up code, expand test Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Fix paths not being lowercased by SanitizeForDatabase. Fix UpdateProductDependencies not updating existing dependencies Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Add test for duplicate dependency matches. Fix saving duplicates Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Clean up code Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Separate test into test and benchmark versions Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Cleanup include Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Fix includes, switch hardcoded job manager setup to use JobManagerComponent instead Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Replaced wildcard_match with PathView::Match. Changed StripAssetPlatformNoCopy to use TokenizeNext. Removed Environment Create/Destroy calls. Made ScopedAllocatorFixture a base class of ScopedAllocatorSetupFixture Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Add AZ Environment create/destroy on AP test environment Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Add missing asserts on database functions Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Fix incorrect usage of StripAssetPlatformNoCopy Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Fix source/product dependency type being ignored. Removed need for unordered_set for list of resolved dependencies. Updated unit tests Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Better variable names Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Remove testing code Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com> * Fix missing includes and namespaces Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
This commit is contained in:
@@ -71,18 +71,35 @@ namespace UnitTest
|
||||
};
|
||||
|
||||
/**
|
||||
* RAII wrapper of AllocatorBase.
|
||||
* The benefit of using this wrapper instead of AllocatorsTestFixture is that SetUp/TearDown of the allocator is managed
|
||||
* on construction/destruction, allowing member variables of derived classes to exist as value (and do heap allocation).
|
||||
*/
|
||||
class ScopedAllocatorSetupFixture
|
||||
: public ::testing::Test
|
||||
, AllocatorsBase
|
||||
* RAII wrapper of AllocatorBase.
|
||||
* The benefit of using this wrapper instead of AllocatorsTestFixture is that SetUp/TearDown of the allocator is managed
|
||||
* on construction/destruction, allowing member variables of derived classes to exist as value (and do heap allocation).
|
||||
*/
|
||||
class ScopedAllocatorFixture : AllocatorsBase
|
||||
{
|
||||
public:
|
||||
ScopedAllocatorSetupFixture() { SetupAllocator(); }
|
||||
explicit ScopedAllocatorSetupFixture(const AZ::SystemAllocator::Descriptor& allocatorDesc) { SetupAllocator(allocatorDesc); }
|
||||
~ScopedAllocatorSetupFixture() { TeardownAllocator(); }
|
||||
ScopedAllocatorFixture()
|
||||
{
|
||||
SetupAllocator();
|
||||
}
|
||||
explicit ScopedAllocatorFixture(const AZ::SystemAllocator::Descriptor& allocatorDesc)
|
||||
{
|
||||
SetupAllocator(allocatorDesc);
|
||||
}
|
||||
~ScopedAllocatorFixture() override
|
||||
{
|
||||
TeardownAllocator();
|
||||
}
|
||||
};
|
||||
|
||||
// Like ScopedAllocatorFixture, but includes the Test base class
|
||||
class ScopedAllocatorSetupFixture
|
||||
: public ::testing::Test
|
||||
, public ScopedAllocatorFixture
|
||||
{
|
||||
public:
|
||||
ScopedAllocatorSetupFixture() = default;
|
||||
explicit ScopedAllocatorSetupFixture(const AZ::SystemAllocator::Descriptor& allocatorDesc) : ScopedAllocatorFixture(allocatorDesc){}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -114,6 +131,7 @@ namespace UnitTest
|
||||
using AllocatorsFixture = AllocatorsTestFixture;
|
||||
|
||||
#if defined(HAVE_BENCHMARK)
|
||||
|
||||
/**
|
||||
* Helper class to handle the boiler plate of setting up a benchmark fixture that uses the system allocators
|
||||
* If you wish to do additional setup and tear down be sure to call the base class SetUp first and TearDown
|
||||
@@ -218,7 +236,7 @@ namespace UnitTest
|
||||
static constexpr bool sHasPadding = size < alignment;
|
||||
AZStd::enable_if<sHasPadding, char[(alignment - size) % alignment]> mPadding;
|
||||
};
|
||||
|
||||
|
||||
template <AZ::u32 size, AZ::u8 instance, size_t alignment>
|
||||
int CreationCounter<size, instance, alignment>::s_count = 0;
|
||||
template <AZ::u32 size, AZ::u8 instance, size_t alignment>
|
||||
|
||||
Reference in New Issue
Block a user