mirror of
https://github.com/intel/compute-runtime.git
synced 2025-11-15 10:14:56 +08:00
Remove redundant copying of std::vectors
Usage of initializer list in for loop to iterate over heavy types has bad consequences. std::initialize_list is only a view and its data is silently created as T[N]. Therefore, if someone uses std::vector with it, it will cause deep-copying of the elements. This change introduces usage of pointers on std::initializer_list to perform a shallow-copy of an addresses. Furthermore, it adds const references in few places, where copy is not needed. Signed-off-by: Patryk Wrobel <patryk.wrobel@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
3778a371fd
commit
44e1f1ba4b
@@ -261,8 +261,8 @@ TEST_F(OclocFatBinaryProductAcronymsTests, givenDeviceArgProvidedWhenUnknownFami
|
||||
}
|
||||
|
||||
TEST_F(OclocFatBinaryProductAcronymsTests, givenDeviceArgProvidedWhenKnownNameIsPassedWithCoreSuffixThenRequestedFatBinaryReturnsTrue) {
|
||||
for (const auto &acronyms : {enabledFamiliesAcronyms, enabledReleasesAcronyms}) {
|
||||
for (const auto &acronym : acronyms) {
|
||||
for (const auto *acronyms : {&enabledFamiliesAcronyms, &enabledReleasesAcronyms}) {
|
||||
for (const auto &acronym : *acronyms) {
|
||||
auto acronymStr = acronym.str() + "_core";
|
||||
const char *name[] = {"ocloc", "-device", acronymStr.c_str()};
|
||||
EXPECT_TRUE(NEO::requestedFatBinary(3, name, oclocArgHelperWithoutInput.get()));
|
||||
@@ -271,8 +271,8 @@ TEST_F(OclocFatBinaryProductAcronymsTests, givenDeviceArgProvidedWhenKnownNameIs
|
||||
}
|
||||
|
||||
TEST_F(OclocFatBinaryProductAcronymsTests, givenDeviceArgProvidedWhenKnownNameIsPassedThenRequestedFatBinaryReturnsTrue) {
|
||||
for (const auto &acronyms : {enabledFamiliesAcronyms, enabledReleasesAcronyms}) {
|
||||
for (const auto &acronym : acronyms) {
|
||||
for (const auto *acronyms : {&enabledFamiliesAcronyms, &enabledReleasesAcronyms}) {
|
||||
for (const auto &acronym : *acronyms) {
|
||||
auto acronymStr = acronym.str();
|
||||
const char *name[] = {"ocloc", "-device", acronymStr.c_str()};
|
||||
EXPECT_TRUE(NEO::requestedFatBinary(3, name, oclocArgHelperWithoutInput.get()));
|
||||
@@ -286,7 +286,8 @@ TEST_F(OclocFatBinaryProductAcronymsTests, givenUnkownArchitectureThenReturnEmpt
|
||||
}
|
||||
|
||||
TEST_F(OclocFatBinaryProductAcronymsTests, givenClosedRangeTooExtensiveWhenProductsOrFamiliesOrReleasesAreValidThenFailIsReturned) {
|
||||
for (const auto &enabledAcronyms : {enabledProductsAcronyms, enabledReleasesAcronyms, enabledFamiliesAcronyms}) {
|
||||
for (const auto *enabledAcronymsPtr : {&enabledProductsAcronyms, &enabledReleasesAcronyms, &enabledFamiliesAcronyms}) {
|
||||
const auto &enabledAcronyms = *enabledAcronymsPtr;
|
||||
if (enabledAcronyms.size() < 3) {
|
||||
GTEST_SKIP();
|
||||
}
|
||||
@@ -323,8 +324,8 @@ TEST_F(OclocFatBinaryProductAcronymsTests, givenAcronymOpenRangeWhenAcronymIsUnk
|
||||
}
|
||||
|
||||
TEST_F(OclocFatBinaryProductAcronymsTests, givenClosedRangeWhenAnyOfAcronymIsUnknownThenReturnEmptyList) {
|
||||
for (const auto &vec : {enabledProductsAcronyms, enabledReleasesAcronyms, enabledFamiliesAcronyms}) {
|
||||
for (const auto &acronym : vec) {
|
||||
for (const auto *vec : {&enabledProductsAcronyms, &enabledReleasesAcronyms, &enabledFamiliesAcronyms}) {
|
||||
for (const auto &acronym : *vec) {
|
||||
auto got = NEO::getTargetProductsForFatbinary("unk:" + acronym.str(), oclocArgHelperWithoutInput.get());
|
||||
EXPECT_TRUE(got.empty());
|
||||
|
||||
|
||||
@@ -123,8 +123,8 @@ PVCTEST_F(PvcHwInfo, givenVariousValuesWhenConvertingHwRevIdAndSteppingThenConve
|
||||
const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||
|
||||
for (uint32_t testValue = 0; testValue < 0xFF; testValue++) {
|
||||
for (const auto &pvc : {pvcXlDeviceIds, pvcXtDeviceIds}) {
|
||||
for (const auto &deviceId : pvc) {
|
||||
for (const auto *pvc : {&pvcXlDeviceIds, &pvcXtDeviceIds}) {
|
||||
for (const auto &deviceId : *pvc) {
|
||||
hwInfo.platform.usDeviceID = deviceId;
|
||||
auto hwRevIdFromStepping = hwInfoConfig.getHwRevIdFromStepping(testValue, hwInfo);
|
||||
if (hwRevIdFromStepping != CommonConstants::invalidStepping) {
|
||||
@@ -137,8 +137,8 @@ PVCTEST_F(PvcHwInfo, givenVariousValuesWhenConvertingHwRevIdAndSteppingThenConve
|
||||
auto steppingFromHwRevId = hwInfoConfig.getSteppingFromHwRevId(hwInfo);
|
||||
if (steppingFromHwRevId != CommonConstants::invalidStepping) {
|
||||
bool anyMatchAfterConversionFromStepping = false;
|
||||
for (const auto &pvc : {pvcXlDeviceIds, pvcXtDeviceIds}) {
|
||||
for (const auto &deviceId : pvc) {
|
||||
for (const auto *pvc : {&pvcXlDeviceIds, &pvcXtDeviceIds}) {
|
||||
for (const auto &deviceId : *pvc) {
|
||||
hwInfo.platform.usDeviceID = deviceId;
|
||||
auto hwRevId = hwInfoConfig.getHwRevIdFromStepping(steppingFromHwRevId, hwInfo);
|
||||
EXPECT_NE(CommonConstants::invalidStepping, hwRevId);
|
||||
|
||||
@@ -161,7 +161,7 @@ bool OclocArgHelper::getHwInfoForProductConfig(uint32_t productConfig, NEO::Hard
|
||||
return retVal;
|
||||
}
|
||||
|
||||
auto deviceAotMap = productConfigHelper->getDeviceAotInfo();
|
||||
const auto &deviceAotMap = productConfigHelper->getDeviceAotInfo();
|
||||
for (auto &deviceConfig : deviceAotMap) {
|
||||
if (deviceConfig.aotConfig.ProductConfig == productConfig) {
|
||||
hwInfo = *deviceConfig.hwInfo;
|
||||
|
||||
@@ -110,10 +110,10 @@ class OclocArgHelper {
|
||||
}
|
||||
|
||||
template <typename... Args>
|
||||
static auto getArgsWithoutDuplicate(Args... args) {
|
||||
static auto getArgsWithoutDuplicate(const Args &...args) {
|
||||
std::vector<NEO::ConstStringRef> out{};
|
||||
for (const auto &acronyms : {args...}) {
|
||||
for (const auto &acronym : acronyms) {
|
||||
for (const auto *acronyms : {std::addressof(args)...}) {
|
||||
for (const auto &acronym : *acronyms) {
|
||||
if (!std::any_of(out.begin(), out.end(), findDuplicate(acronym))) {
|
||||
out.push_back(acronym);
|
||||
}
|
||||
@@ -123,10 +123,10 @@ class OclocArgHelper {
|
||||
}
|
||||
|
||||
template <typename... Args>
|
||||
static auto createStringForArgs(Args... args) {
|
||||
static auto createStringForArgs(const Args &...args) {
|
||||
std::ostringstream os;
|
||||
for (const auto &acronyms : {args...}) {
|
||||
for (const auto &acronym : acronyms) {
|
||||
for (const auto *acronyms : {std::addressof(args)...}) {
|
||||
for (const auto &acronym : *acronyms) {
|
||||
if (os.tellp())
|
||||
os << ", ";
|
||||
os << acronym.str();
|
||||
|
||||
@@ -118,8 +118,8 @@ void DebugZebinCreator::applyRelocations() {
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto &relocations : {elf.getDebugInfoRelocations(), elf.getRelocations()}) {
|
||||
for (const auto &reloc : relocations) {
|
||||
for (const auto *relocations : {&elf.getDebugInfoRelocations(), &elf.getRelocations()}) {
|
||||
for (const auto &reloc : *relocations) {
|
||||
auto relocType = static_cast<RELOC_TYPE_ZEBIN>(reloc.relocType);
|
||||
if (isRelocTypeSupported(relocType) == false) {
|
||||
continue;
|
||||
|
||||
@@ -451,8 +451,8 @@ DG2TEST_F(ProductConfigTests, givenDg2G10DeviceIdWhenDifferentRevisionIsPassedTh
|
||||
}
|
||||
|
||||
DG2TEST_F(ProductConfigTests, givenDg2DeviceIdWhenIncorrectRevisionIsPassedThenCorrectProductConfigIsReturned) {
|
||||
for (const auto &dg2 : {dg2G10DeviceIds, dg2G11DeviceIds}) {
|
||||
for (const auto &deviceId : dg2) {
|
||||
for (const auto *dg2 : {&dg2G10DeviceIds, &dg2G11DeviceIds}) {
|
||||
for (const auto &deviceId : *dg2) {
|
||||
hwInfo.platform.usDeviceID = deviceId;
|
||||
hwInfo.platform.usRevId = CommonConstants::invalidRevisionID;
|
||||
productConfig = hwInfoConfig->getProductConfigFromHwInfo(hwInfo);
|
||||
|
||||
Reference in New Issue
Block a user