qmake: use reserve to optimize memory allocation.
Change-Id: I6ace338512c24fd9dc11c767a28f0a63454076fa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This commit is contained in:
parent
57ca755d2e
commit
1d3503b8f3
@ -1004,7 +1004,10 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
|
|||||||
ProStringList outputPaths;
|
ProStringList outputPaths;
|
||||||
const ProStringList &archs = project->values("QMAKE_XCODE_ARCHS");
|
const ProStringList &archs = project->values("QMAKE_XCODE_ARCHS");
|
||||||
if (!archs.isEmpty()) {
|
if (!archs.isEmpty()) {
|
||||||
for (int i = 0; i < archs.size(); ++i) {
|
const int size = archs.size();
|
||||||
|
inputPaths.reserve(size);
|
||||||
|
outputPaths.reserve(size);
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
const ProString &arch = archs.at(i);
|
const ProString &arch = archs.at(i);
|
||||||
inputPaths << "$(OBJECT_FILE_DIR_$(CURRENT_VARIANT))/" + arch + "/";
|
inputPaths << "$(OBJECT_FILE_DIR_$(CURRENT_VARIANT))/" + arch + "/";
|
||||||
outputPaths << "$(LINK_FILE_LIST_$(CURRENT_VARIANT)_" + arch + ")";
|
outputPaths << "$(LINK_FILE_LIST_$(CURRENT_VARIANT)_" + arch + ")";
|
||||||
|
@ -776,6 +776,7 @@ MakefileGenerator::init()
|
|||||||
if(project->isActiveConfig("depend_includepath"))
|
if(project->isActiveConfig("depend_includepath"))
|
||||||
incDirs += v["INCLUDEPATH"];
|
incDirs += v["INCLUDEPATH"];
|
||||||
QList<QMakeLocalFileName> deplist;
|
QList<QMakeLocalFileName> deplist;
|
||||||
|
deplist.reserve(incDirs.size());
|
||||||
for (ProStringList::Iterator it = incDirs.begin(); it != incDirs.end(); ++it)
|
for (ProStringList::Iterator it = incDirs.begin(); it != incDirs.end(); ++it)
|
||||||
deplist.append(QMakeLocalFileName((*it).toQString()));
|
deplist.append(QMakeLocalFileName((*it).toQString()));
|
||||||
QMakeSourceFileInfo::setDependencyPaths(deplist);
|
QMakeSourceFileInfo::setDependencyPaths(deplist);
|
||||||
@ -1010,6 +1011,7 @@ MakefileGenerator::writeProjectMakefile()
|
|||||||
QList<SubTarget*> targets;
|
QList<SubTarget*> targets;
|
||||||
{
|
{
|
||||||
ProStringList builds = project->values("BUILDS");
|
ProStringList builds = project->values("BUILDS");
|
||||||
|
targets.reserve(builds.size());
|
||||||
for (ProStringList::Iterator it = builds.begin(); it != builds.end(); ++it) {
|
for (ProStringList::Iterator it = builds.begin(); it != builds.end(); ++it) {
|
||||||
SubTarget *st = new SubTarget;
|
SubTarget *st = new SubTarget;
|
||||||
targets.append(st);
|
targets.append(st);
|
||||||
@ -1450,7 +1452,9 @@ QString
|
|||||||
MakefileGenerator::fixFileVarGlue(const ProKey &var, const QString &before, const QString &glue, const QString &after) const
|
MakefileGenerator::fixFileVarGlue(const ProKey &var, const QString &before, const QString &glue, const QString &after) const
|
||||||
{
|
{
|
||||||
ProStringList varList;
|
ProStringList varList;
|
||||||
for (const ProString &val : project->values(var))
|
const auto values = project->values(var);
|
||||||
|
varList.reserve(values.size());
|
||||||
|
for (const ProString &val : values)
|
||||||
varList << escapeFilePath(Option::fixPathToTargetOS(val.toQString()));
|
varList << escapeFilePath(Option::fixPathToTargetOS(val.toQString()));
|
||||||
return valGlue(varList, before, glue, after);
|
return valGlue(varList, before, glue, after);
|
||||||
}
|
}
|
||||||
@ -2803,7 +2807,9 @@ ProStringList
|
|||||||
MakefileGenerator::escapeFilePaths(const ProStringList &paths) const
|
MakefileGenerator::escapeFilePaths(const ProStringList &paths) const
|
||||||
{
|
{
|
||||||
ProStringList ret;
|
ProStringList ret;
|
||||||
for (int i = 0; i < paths.size(); ++i)
|
const int size = paths.size();
|
||||||
|
ret.reserve(size);
|
||||||
|
for (int i = 0; i < size; ++i)
|
||||||
ret.append(escapeFilePath(paths.at(i)));
|
ret.append(escapeFilePath(paths.at(i)));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2818,7 +2824,9 @@ QStringList
|
|||||||
MakefileGenerator::escapeDependencyPaths(const QStringList &paths) const
|
MakefileGenerator::escapeDependencyPaths(const QStringList &paths) const
|
||||||
{
|
{
|
||||||
QStringList ret;
|
QStringList ret;
|
||||||
for(int i = 0; i < paths.size(); ++i)
|
const int size = paths.size();
|
||||||
|
ret.reserve(size);
|
||||||
|
for (int i = 0; i < size; ++i)
|
||||||
ret.append(escapeDependencyPath(paths.at(i)));
|
ret.append(escapeDependencyPath(paths.at(i)));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2827,7 +2835,9 @@ ProStringList
|
|||||||
MakefileGenerator::escapeDependencyPaths(const ProStringList &paths) const
|
MakefileGenerator::escapeDependencyPaths(const ProStringList &paths) const
|
||||||
{
|
{
|
||||||
ProStringList ret;
|
ProStringList ret;
|
||||||
for (int i = 0; i < paths.size(); ++i)
|
const int size = paths.size();
|
||||||
|
ret.reserve(size);
|
||||||
|
for (int i = 0; i < size; ++i)
|
||||||
ret.append(escapeDependencyPath(paths.at(i).toQString()));
|
ret.append(escapeDependencyPath(paths.at(i).toQString()));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ QT_BEGIN_NAMESPACE
|
|||||||
static QString nmakePathList(const QStringList &list)
|
static QString nmakePathList(const QStringList &list)
|
||||||
{
|
{
|
||||||
QStringList pathList;
|
QStringList pathList;
|
||||||
|
pathList.reserve(list.size());
|
||||||
for (const QString &path : list)
|
for (const QString &path : list)
|
||||||
pathList.append(QDir::cleanPath(path));
|
pathList.append(QDir::cleanPath(path));
|
||||||
|
|
||||||
@ -91,6 +92,7 @@ NmakeMakefileGenerator::writeMakefile(QTextStream &t)
|
|||||||
t << "\nPATH = " << sdk.binPath() << "\n";
|
t << "\nPATH = " << sdk.binPath() << "\n";
|
||||||
} else {
|
} else {
|
||||||
QStringList sdkStringList;
|
QStringList sdkStringList;
|
||||||
|
sdkStringList.reserve(sdkList.size());
|
||||||
for (const CeSdkInfo &info : sdkList)
|
for (const CeSdkInfo &info : sdkList)
|
||||||
sdkStringList << info.name();
|
sdkStringList << info.name();
|
||||||
|
|
||||||
|
@ -263,7 +263,9 @@ void Win32MakefileGenerator::processRcFileVar()
|
|||||||
QString versionString = vers.join('.');
|
QString versionString = vers.join('.');
|
||||||
|
|
||||||
QStringList rcIcons;
|
QStringList rcIcons;
|
||||||
for (const ProString &icon : project->values("RC_ICONS"))
|
const auto icons = project->values("RC_ICONS");
|
||||||
|
rcIcons.reserve(icons.size());
|
||||||
|
for (const ProString &icon : icons)
|
||||||
rcIcons.append(fileFixify(icon.toQString(), FileFixifyAbsolute));
|
rcIcons.append(fileFixify(icon.toQString(), FileFixifyAbsolute));
|
||||||
|
|
||||||
QString companyName;
|
QString companyName;
|
||||||
|
@ -81,6 +81,7 @@ XmlOutput::XMLState XmlOutput::state()
|
|||||||
void XmlOutput::updateIndent()
|
void XmlOutput::updateIndent()
|
||||||
{
|
{
|
||||||
currentIndent.clear();
|
currentIndent.clear();
|
||||||
|
currentIndent.reserve(currentLevel);
|
||||||
for (int i = 0; i < currentLevel; ++i)
|
for (int i = 0; i < currentLevel; ++i)
|
||||||
currentIndent.append(indent);
|
currentIndent.append(indent);
|
||||||
}
|
}
|
||||||
|
@ -145,6 +145,7 @@ void QMakeEvaluator::initFunctionStatics()
|
|||||||
{ "shell_quote", E_SHELL_QUOTE },
|
{ "shell_quote", E_SHELL_QUOTE },
|
||||||
{ "getenv", E_GETENV },
|
{ "getenv", E_GETENV },
|
||||||
};
|
};
|
||||||
|
statics.expands.reserve((int)(sizeof(expandInits)/sizeof(expandInits[0])));
|
||||||
for (unsigned i = 0; i < sizeof(expandInits)/sizeof(expandInits[0]); ++i)
|
for (unsigned i = 0; i < sizeof(expandInits)/sizeof(expandInits[0]); ++i)
|
||||||
statics.expands.insert(ProKey(expandInits[i].name), expandInits[i].func);
|
statics.expands.insert(ProKey(expandInits[i].name), expandInits[i].func);
|
||||||
|
|
||||||
@ -186,6 +187,7 @@ void QMakeEvaluator::initFunctionStatics()
|
|||||||
{ "touch", T_TOUCH },
|
{ "touch", T_TOUCH },
|
||||||
{ "cache", T_CACHE },
|
{ "cache", T_CACHE },
|
||||||
};
|
};
|
||||||
|
statics.functions.reserve((int)(sizeof(testInits)/sizeof(testInits[0])));
|
||||||
for (unsigned i = 0; i < sizeof(testInits)/sizeof(testInits[0]); ++i)
|
for (unsigned i = 0; i < sizeof(testInits)/sizeof(testInits[0]); ++i)
|
||||||
statics.functions.insert(ProKey(testInits[i].name), testInits[i].func);
|
statics.functions.insert(ProKey(testInits[i].name), testInits[i].func);
|
||||||
}
|
}
|
||||||
|
@ -186,6 +186,7 @@ void QMakeEvaluator::initStatics()
|
|||||||
{ "IN_PWD", "PWD" },
|
{ "IN_PWD", "PWD" },
|
||||||
{ "DEPLOYMENT", "INSTALLS" }
|
{ "DEPLOYMENT", "INSTALLS" }
|
||||||
};
|
};
|
||||||
|
statics.varMap.reserve((int)(sizeof(mapInits)/sizeof(mapInits[0])));
|
||||||
for (unsigned i = 0; i < sizeof(mapInits)/sizeof(mapInits[0]); ++i)
|
for (unsigned i = 0; i < sizeof(mapInits)/sizeof(mapInits[0]); ++i)
|
||||||
statics.varMap.insert(ProKey(mapInits[i].oldname), ProKey(mapInits[i].newname));
|
statics.varMap.insert(ProKey(mapInits[i].oldname), ProKey(mapInits[i].newname));
|
||||||
}
|
}
|
||||||
@ -755,12 +756,14 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProLoop(
|
|||||||
if (ok) {
|
if (ok) {
|
||||||
int end = itl.mid(dotdot+2).toInt(&ok);
|
int end = itl.mid(dotdot+2).toInt(&ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
if (m_cumulative && qAbs(end - start) > 100) {
|
const int absDiff = qAbs(end - start);
|
||||||
|
if (m_cumulative && absDiff > 100) {
|
||||||
// Such a loop is unlikely to contribute something useful to the
|
// Such a loop is unlikely to contribute something useful to the
|
||||||
// file collection, and may cause considerable delay.
|
// file collection, and may cause considerable delay.
|
||||||
traceMsg("skipping excessive loop in cumulative mode");
|
traceMsg("skipping excessive loop in cumulative mode");
|
||||||
return ReturnFalse;
|
return ReturnFalse;
|
||||||
}
|
}
|
||||||
|
list.reserve(absDiff + 1);
|
||||||
if (start < end) {
|
if (start < end) {
|
||||||
for (int i = start; i <= end; i++)
|
for (int i = start; i <= end; i++)
|
||||||
list << ProString(QString::number(i));
|
list << ProString(QString::number(i));
|
||||||
|
@ -391,6 +391,7 @@ Option::init(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if(argc && argv) {
|
if(argc && argv) {
|
||||||
QStringList args;
|
QStringList args;
|
||||||
|
args.reserve(argc - 1);
|
||||||
for (int i = 1; i < argc; i++)
|
for (int i = 1; i < argc; i++)
|
||||||
args << QString::fromLocal8Bit(argv[i]);
|
args << QString::fromLocal8Bit(argv[i]);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user