Skip to content

Commit 2395cd3

Browse files
Reduce allocations in DatabaseUtilities::sortedTables
https://bugs.webkit.org/show_bug.cgi?id=230933 Patch by Alex Christensen <[email protected]> on 2021-09-29 Reviewed by Chris Dumez. No change in behavior except no more memory allocations. What a wonderful thing. * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: (WebKit::ResourceLoadStatisticsDatabaseStore::sortedTables): * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: * NetworkProcess/DatabaseUtilities.cpp: (WebKit::DatabaseUtilities::migrateDataToNewTablesIfNecessary): * NetworkProcess/DatabaseUtilities.h: * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp: (WebKit::PCM::Database::sortedTables): * NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@283227 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 85e26df commit 2395cd3

File tree

7 files changed

+31
-12
lines changed

7 files changed

+31
-12
lines changed

Source/WebKit/ChangeLog

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
2021-09-29 Alex Christensen <[email protected]>
2+
3+
Reduce allocations in DatabaseUtilities::sortedTables
4+
https://bugs.webkit.org/show_bug.cgi?id=230933
5+
6+
Reviewed by Chris Dumez.
7+
8+
No change in behavior except no more memory allocations. What a wonderful thing.
9+
10+
* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
11+
(WebKit::ResourceLoadStatisticsDatabaseStore::sortedTables):
12+
* NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
13+
* NetworkProcess/DatabaseUtilities.cpp:
14+
(WebKit::DatabaseUtilities::migrateDataToNewTablesIfNecessary):
15+
* NetworkProcess/DatabaseUtilities.h:
16+
* NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:
17+
(WebKit::PCM::Database::sortedTables):
18+
* NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:
19+
120
2021-09-29 Devin Rousso <[email protected]>
221

322
Add support for sending Expected<void, E> in IPC messages

Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,9 @@ const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& Resour
273273
return expectedTableAndIndexQueries;
274274
}
275275

276-
const Vector<String>& ResourceLoadStatisticsDatabaseStore::sortedTables()
276+
Span<const ASCIILiteral> ResourceLoadStatisticsDatabaseStore::sortedTables()
277277
{
278-
static auto sortedTables = makeNeverDestroyed(Vector<String> {
278+
static constexpr std::array sortedTables {
279279
"ObservedDomains"_s,
280280
"TopLevelDomains"_s,
281281
"StorageAccessUnderTopFrameDomains"_s,
@@ -289,9 +289,9 @@ const Vector<String>& ResourceLoadStatisticsDatabaseStore::sortedTables()
289289
"SubresourceUniqueRedirectsTo"_s,
290290
"SubresourceUniqueRedirectsFrom"_s,
291291
"OperatingDates"_s
292-
});
292+
};
293293

294-
return sortedTables;
294+
return { sortedTables.data(), sortedTables.size() };
295295
}
296296

297297
template <typename ContainerType>

Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class ResourceLoadStatisticsDatabaseStore final : public ResourceLoadStatisticsS
117117

118118
private:
119119
const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() final;
120-
const Vector<String>& sortedTables() final;
120+
Span<const ASCIILiteral> sortedTables() final;
121121
void includeTodayAsOperatingDateIfNecessary() override;
122122
void clearOperatingDates() override { }
123123
bool hasStatisticsExpired(WallTime mostRecentUserInteractionTime, OperatingDatesWindow) const override;

Source/WebKit/NetworkProcess/DatabaseUtilities.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ void DatabaseUtilities::migrateDataToNewTablesIfNecessary()
280280
for (auto& table : sortedTables()) {
281281
auto migrateTableData = insertDistinctValuesInTableStatement(m_database, table);
282282
if (!migrateTableData || migrateTableData->step() != SQLITE_DONE) {
283-
RELEASE_LOG_ERROR(PrivateClickMeasurement, "%p - DatabaseUtilities::migrateDataToNewTablesIfNecessary (table %s) failed to migrate schema, error message: %s", this, table.utf8().data(), m_database.lastErrorMsg());
283+
RELEASE_LOG_ERROR(PrivateClickMeasurement, "%p - DatabaseUtilities::migrateDataToNewTablesIfNecessary (table %s) failed to migrate schema, error message: %s", this, table.characters(), m_database.lastErrorMsg());
284284
ASSERT_NOT_REACHED();
285285
return;
286286
}

Source/WebKit/NetworkProcess/DatabaseUtilities.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class DatabaseUtilities {
6060
virtual String getDomainStringFromDomainID(unsigned) const = 0;
6161
virtual bool needsUpdatedSchema() = 0;
6262
virtual const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() = 0;
63-
virtual const Vector<String>& sortedTables() = 0;
63+
virtual Span<const ASCIILiteral> sortedTables() = 0;
6464
TableAndIndexPair currentTableAndIndexQueries(const String&);
6565
String stripIndexQueryToMatchStoredValue(const char* originalQuery);
6666
void migrateDataToNewTablesIfNecessary();

Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,15 @@ const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& Databa
111111
return expectedTableAndIndexQueries;
112112
}
113113

114-
const Vector<String>& Database::sortedTables()
114+
Span<const ASCIILiteral> Database::sortedTables()
115115
{
116-
static auto sortedTables = makeNeverDestroyed(Vector<String> {
116+
static std::array sortedTables {
117117
"PCMObservedDomains"_s,
118118
"UnattributedPrivateClickMeasurement"_s,
119119
"AttributedPrivateClickMeasurement"_s
120-
});
120+
};
121121

122-
return sortedTables;
122+
return { sortedTables.data(), sortedTables.size() };
123123
}
124124

125125
void Database::interruptAllDatabases()

Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class Database : public DatabaseUtilities {
8080
bool needsUpdatedSchema() final;
8181
bool createUniqueIndices() final;
8282
const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() final;
83-
const Vector<String>& sortedTables() final;
83+
Span<const ASCIILiteral> sortedTables() final;
8484

8585
Vector<String> columnsForTable(const String& tableName);
8686
void addMissingColumnToTable(const String& tableName, const String& columnName);

0 commit comments

Comments
 (0)