Title: [283227] trunk/Source/WebKit
Revision
283227
Author
[email protected]
Date
2021-09-29 09:28:47 -0700 (Wed, 29 Sep 2021)

Log Message

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:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (283226 => 283227)


--- trunk/Source/WebKit/ChangeLog	2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/ChangeLog	2021-09-29 16:28:47 UTC (rev 283227)
@@ -1,3 +1,22 @@
+2021-09-29  Alex Christensen  <[email protected]>
+
+        Reduce allocations in DatabaseUtilities::sortedTables
+        https://bugs.webkit.org/show_bug.cgi?id=230933
+
+        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:
+
 2021-09-29  Devin Rousso  <[email protected]>
 
         Add support for sending Expected<void, E> in IPC messages

Modified: trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp (283226 => 283227)


--- trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp	2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp	2021-09-29 16:28:47 UTC (rev 283227)
@@ -273,9 +273,9 @@
     return expectedTableAndIndexQueries;
 }
 
-const Vector<String>& ResourceLoadStatisticsDatabaseStore::sortedTables()
+Span<const ASCIILiteral> ResourceLoadStatisticsDatabaseStore::sortedTables()
 {
-    static auto sortedTables = makeNeverDestroyed(Vector<String> {
+    static constexpr std::array sortedTables {
         "ObservedDomains"_s,
         "TopLevelDomains"_s,
         "StorageAccessUnderTopFrameDomains"_s,
@@ -289,9 +289,9 @@
         "SubresourceUniqueRedirectsTo"_s,
         "SubresourceUniqueRedirectsFrom"_s,
         "OperatingDates"_s
-    });
+    };
 
-    return sortedTables;
+    return { sortedTables.data(), sortedTables.size() };
 }
 
 template <typename ContainerType>

Modified: trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h (283226 => 283227)


--- trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h	2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h	2021-09-29 16:28:47 UTC (rev 283227)
@@ -117,7 +117,7 @@
 
 private:
     const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() final;
-    const Vector<String>& sortedTables() final;
+    Span<const ASCIILiteral> sortedTables() final;
     void includeTodayAsOperatingDateIfNecessary() override;
     void clearOperatingDates() override { }
     bool hasStatisticsExpired(WallTime mostRecentUserInteractionTime, OperatingDatesWindow) const override;

Modified: trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.cpp (283226 => 283227)


--- trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.cpp	2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.cpp	2021-09-29 16:28:47 UTC (rev 283227)
@@ -280,7 +280,7 @@
     for (auto& table : sortedTables()) {
         auto migrateTableData = insertDistinctValuesInTableStatement(m_database, table);
         if (!migrateTableData || migrateTableData->step() != SQLITE_DONE) {
-            RELEASE_LOG_ERROR(PrivateClickMeasurement, "%p - DatabaseUtilities::migrateDataToNewTablesIfNecessary (table %s) failed to migrate schema, error message: %s", this, table.utf8().data(), m_database.lastErrorMsg());
+            RELEASE_LOG_ERROR(PrivateClickMeasurement, "%p - DatabaseUtilities::migrateDataToNewTablesIfNecessary (table %s) failed to migrate schema, error message: %s", this, table.characters(), m_database.lastErrorMsg());
             ASSERT_NOT_REACHED();
             return;
         }

Modified: trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.h (283226 => 283227)


--- trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.h	2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/DatabaseUtilities.h	2021-09-29 16:28:47 UTC (rev 283227)
@@ -60,7 +60,7 @@
     virtual String getDomainStringFromDomainID(unsigned) const = 0;
     virtual bool needsUpdatedSchema() = 0;
     virtual const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() = 0;
-    virtual const Vector<String>& sortedTables() = 0;
+    virtual Span<const ASCIILiteral> sortedTables() = 0;
     TableAndIndexPair currentTableAndIndexQueries(const String&);
     String stripIndexQueryToMatchStoredValue(const char* originalQuery);
     void migrateDataToNewTablesIfNecessary();

Modified: trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp (283226 => 283227)


--- trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp	2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp	2021-09-29 16:28:47 UTC (rev 283227)
@@ -111,15 +111,15 @@
     return expectedTableAndIndexQueries;
 }
 
-const Vector<String>& Database::sortedTables()
+Span<const ASCIILiteral> Database::sortedTables()
 {
-    static auto sortedTables = makeNeverDestroyed(Vector<String> {
+    static std::array sortedTables {
         "PCMObservedDomains"_s,
         "UnattributedPrivateClickMeasurement"_s,
         "AttributedPrivateClickMeasurement"_s
-    });
+    };
 
-    return sortedTables;
+    return { sortedTables.data(), sortedTables.size() };
 }
 
 void Database::interruptAllDatabases()

Modified: trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h (283226 => 283227)


--- trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h	2021-09-29 16:26:43 UTC (rev 283226)
+++ trunk/Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h	2021-09-29 16:28:47 UTC (rev 283227)
@@ -80,7 +80,7 @@
     bool needsUpdatedSchema() final;
     bool createUniqueIndices() final;
     const MemoryCompactLookupOnlyRobinHoodHashMap<String, TableAndIndexPair>& expectedTableAndIndexQueries() final;
-    const Vector<String>& sortedTables() final;
+    Span<const ASCIILiteral> sortedTables() final;
 
     Vector<String> columnsForTable(const String& tableName);
     void addMissingColumnToTable(const String& tableName, const String& columnName);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to