Kernel: Avoid some allocations in command line parsing (#3213)

1. Preallocate args hashmap to prevent rehashing.
2. Use move to prevent string copies.
This commit is contained in:
Muhammad Zahalqa 2020-08-23 16:04:49 +03:00 committed by GitHub
parent 1b075ffe3b
commit 7506adbece
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
Notes: sideshowbarker 2024-07-19 03:15:30 +09:00

View File

@ -46,7 +46,9 @@ CommandLine::CommandLine(const String& string)
{ {
s_the = this; s_the = this;
for (auto str : m_string.split(' ')) { const auto& args = m_string.split(' ');
m_params.ensure_capacity(args.size());
for (auto&& str : args) {
if (str == "") { if (str == "") {
continue; continue;
} }
@ -54,9 +56,9 @@ CommandLine::CommandLine(const String& string)
auto pair = str.split_limit('=', 2); auto pair = str.split_limit('=', 2);
if (pair.size() == 1) { if (pair.size() == 1) {
m_params.set(pair[0], ""); m_params.set(move(pair[0]), "");
} else { } else {
m_params.set(pair[0], pair[1]); m_params.set(move(pair[0]), move(pair[1]));
} }
} }
} }