This reduces non-unity build time by ~2% and build size by ~0.5%.

This PR is a 'clean' version of #6199 updated to latest development

Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com>
This commit is contained in:
nemerle
2021-12-12 23:48:47 +01:00
parent 4670003aaf
commit 5ff65be314
87 changed files with 882 additions and 604 deletions
@@ -15,6 +15,7 @@
#include <AzCore/Interface/Interface.h>
#include <AzCore/IO/FileIO.h>
#include <AzCore/IO/IStreamer.h>
#include <AzCore/IO/Streamer/FileRequest.h>
#include <AzCore/IO/SystemFile.h>
#include <AzCore/std/chrono/chrono.h>
#include <AzCore/std/string/conversions.h>
@@ -83,9 +83,9 @@ namespace AzFramework
AZ_PROFILE_FUNCTION(AzCore);
AZ_Assert(request, "PrepareRequest was provided a null request.");
if (AZStd::holds_alternative<FileRequest::ReadRequestData>(request->GetCommand()))
if (AZStd::holds_alternative<Requests::ReadRequestData>(request->GetCommand()))
{
auto& readRequest = AZStd::get<FileRequest::ReadRequestData>(request->GetCommand());
auto& readRequest = AZStd::get<Requests::ReadRequestData>(request->GetCommand());
FileRequest* read = m_context->GetNewInternalRequest();
read->CreateRead(request, readRequest.m_output, readRequest.m_outputSize, readRequest.m_path,
@@ -106,14 +106,14 @@ namespace AzFramework
{
using namespace AZ::IO;
using Command = AZStd::decay_t<decltype(args)>;
if constexpr (AZStd::is_same_v<Command, FileRequest::ReadData> ||
AZStd::is_same_v<Command, FileRequest::FileExistsCheckData> ||
AZStd::is_same_v<Command, FileRequest::FileMetaDataRetrievalData>)
if constexpr (AZStd::is_same_v<Command, Requests::ReadData> ||
AZStd::is_same_v<Command, Requests::FileExistsCheckData> ||
AZStd::is_same_v<Command, Requests::FileMetaDataRetrievalData>)
{
m_pendingRequests.push_back(request);
return;
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::CancelData>)
else if constexpr (AZStd::is_same_v<Command, Requests::CancelData>)
{
if (CancelRequest(request, args.m_target))
{
@@ -124,15 +124,15 @@ namespace AzFramework
}
else
{
if constexpr (AZStd::is_same_v<Command, FileRequest::FlushData>)
if constexpr (AZStd::is_same_v<Command, Requests::FlushData>)
{
FlushCache(args.m_path);
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::FlushAllData>)
else if constexpr (AZStd::is_same_v<Command, Requests::FlushAllData>)
{
FlushEntireCache();
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::ReportData>)
else if constexpr (AZStd::is_same_v<Command, Requests::ReportData>)
{
Report(args);
}
@@ -152,15 +152,15 @@ namespace AzFramework
{
using namespace AZ::IO;
using Command = AZStd::decay_t<decltype(args)>;
if constexpr (AZStd::is_same_v<Command, FileRequest::ReadData>)
if constexpr (AZStd::is_same_v<Command, Requests::ReadData>)
{
ReadFile(request);
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::FileExistsCheckData>)
else if constexpr (AZStd::is_same_v<Command, Requests::FileExistsCheckData>)
{
FileExistsRequest(request);
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::FileMetaDataRetrievalData>)
else if constexpr (AZStd::is_same_v<Command, Requests::FileMetaDataRetrievalData>)
{
FileMetaDataRetrievalRequest(request);
}
@@ -232,23 +232,23 @@ namespace AzFramework
{
using namespace AZ::IO;
using Command = AZStd::decay_t<decltype(args)>;
if constexpr (AZStd::is_same_v<Command, FileRequest::ReadData>)
if constexpr (AZStd::is_same_v<Command, Requests::ReadData>)
{
targetFile = &args.m_path;
readSize = args.m_size;
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::CompressedReadData>)
else if constexpr (AZStd::is_same_v<Command, Requests::CompressedReadData>)
{
targetFile = &args.m_compressionInfo.m_archiveFilename;
readSize = args.m_compressionInfo.m_compressedSize;
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::FileExistsCheckData>)
else if constexpr (AZStd::is_same_v<Command, Requests::FileExistsCheckData>)
{
readSize = 0;
AZStd::chrono::microseconds averageTime = m_getFileExistsTimeAverage.CalculateAverage();
startTime += averageTime;
}
else if constexpr (AZStd::is_same_v<Command, FileRequest::FileMetaDataRetrievalData>)
else if constexpr (AZStd::is_same_v<Command, Requests::FileMetaDataRetrievalData>)
{
readSize = 0;
AZStd::chrono::microseconds averageTime = m_getFileMetaDataTimeAverage.CalculateAverage();
@@ -280,7 +280,7 @@ namespace AzFramework
AZ_PROFILE_FUNCTION(AzCore);
auto data = AZStd::get_if<FileRequest::ReadData>(&request->GetCommand());
auto data = AZStd::get_if<Requests::ReadData>(&request->GetCommand());
AZ_Assert(data, "Request doing reading in the RemoteStorageDrive didn't contain read data.");
HandleType file = InvalidHandle;
@@ -397,7 +397,7 @@ namespace AzFramework
TIMED_AVERAGE_WINDOW_SCOPE(m_getFileExistsTimeAverage);
auto& fileExists = AZStd::get<FileRequest::FileExistsCheckData>(request->GetCommand());
auto& fileExists = AZStd::get<Requests::FileExistsCheckData>(request->GetCommand());
size_t cacheIndex = FindFileInCache(fileExists.m_path);
if (cacheIndex != s_fileNotFound)
{
@@ -430,7 +430,7 @@ namespace AzFramework
AZ::u64 fileSize = 0;
bool found = false;
auto& command = AZStd::get<FileRequest::FileMetaDataRetrievalData>(request->GetCommand());
auto& command = AZStd::get<Requests::FileMetaDataRetrievalData>(request->GetCommand());
// If the file is already open, use the file handle which usually is cheaper than asking for the file by name.
size_t cacheIndex = FindFileInCache(command.m_path);
if (cacheIndex != s_fileNotFound)
@@ -526,13 +526,13 @@ namespace AzFramework
StreamStackEntry::CollectStatistics(statistics);
}
void RemoteStorageDrive::Report(const AZ::IO::FileRequest::ReportData& data) const
void RemoteStorageDrive::Report(const AZ::IO::Requests::ReportData& data) const
{
using namespace AZ::IO;
switch (data.m_reportType)
{
case FileRequest::ReportData::ReportType::FileLocks:
case Requests::ReportType::FileLocks:
for (AZ::u32 i = 0; i < m_fileHandles.size(); ++i)
{
if (m_fileHandles[i] != InvalidHandle)
@@ -16,6 +16,15 @@
#include <AzCore/std/chrono/clocks.h>
#include <AzFramework/IO/RemoteFileIO.h>
namespace AZ::IO
{
class RequestPath;
namespace Requests
{
struct ReportData;
}
}
namespace AzFramework
{
struct RemoteStorageDriveConfig final :
@@ -63,7 +72,7 @@ namespace AzFramework
const AZ::IO::RequestPath*& activeFile) const;
void FlushCache(const AZ::IO::RequestPath& filePath);
void FlushEntireCache();
void Report(const AZ::IO::FileRequest::ReportData& data) const;
void Report(const AZ::IO::Requests::ReportData& data) const;
AZ::IO::RemoteFileIO m_fileIO;
AZ::IO::TimedAverageWindow<AZ::IO::s_statisticsWindowSize> m_fileOpenCloseTimeAverage;
@@ -10,6 +10,7 @@
#include <AzCore/Memory/SystemAllocator.h>
#include <AzCore/Serialization/SerializeContext.h>
#include <AzCore/Interface/Interface.h>
#include <AzFramework/Physics/PhysicsScene.h>
#include <AzFramework/Physics/PhysicsSystem.h>
@@ -8,6 +8,7 @@
#include <AzFramework/Physics/Common/PhysicsSimulatedBodyAutomation.h>
#include <AzCore/Interface/Interface.h>
#include <AzCore/Memory/SystemAllocator.h>
#include <AzCore/Serialization/SerializeContext.h>
@@ -8,6 +8,7 @@
#include <AzFramework/Physics/Common/PhysicsSimulatedBodyEvents.h>
#include <AzCore/Interface/Interface.h>
#include <AzCore/std/functional.h>
#include <AzFramework/Physics/PhysicsScene.h>
#include <AzFramework/Physics/PhysicsSystem.h>
@@ -9,6 +9,7 @@
#include <AzFramework/Physics/PhysicsSystem.h>
#include <AzFramework/Physics/Configuration/SceneConfiguration.h>
#include <AzCore/Interface/Interface.h>
#include <AzCore/RTTI/BehaviorContext.h>
@@ -8,6 +8,7 @@
#include <AzFramework/Physics/PhysicsSystem.h>
#include <AzCore/Interface/Interface.h>
#include <AzCore/RTTI/BehaviorContext.h>
namespace AzPhysics
@@ -17,6 +17,7 @@
#include <AzCore/Asset/AssetSerializer.h>
#include <AzCore/Component/Entity.h>
#include <AzCore/Debug/Profiler.h>
#include <AzCore/Serialization/SerializeContext.h>
#include <AzCore/Serialization/EditContext.h>