Bug 1344131 - Add a gtest bench for Servo_DeclarationBlock_SetPropertyById. r=emilio
MozReview-Commit-ID: 83Ryi6CKTLV
--- a/layout/style/test/gtest/StyloParsingBench.cpp
+++ b/layout/style/test/gtest/StyloParsingBench.cpp
@@ -11,16 +11,17 @@
#include "NullPrincipalURI.h"
#include "nsCSSParser.h"
using namespace mozilla;
using namespace mozilla::css;
using namespace mozilla::net;
#define PARSING_REPETITIONS 20
+#define SETPROPERTY_REPETITIONS (1000 * 1000)
#ifdef MOZ_STYLO
static void ServoParsingBench() {
NS_NAMED_LITERAL_CSTRING(css_, EXAMPLE_STYLESHEET);
const nsACString& css = css_;
ASSERT_TRUE(IsUTF8(css));
@@ -52,8 +53,38 @@ static void GeckoParsingBench() {
eAuthorSheetFeatures, CORS_NONE, RP_No_Referrer);
stylesheet->SetURIs(uri, uri, uri);
stylesheet->SetComplete();
ASSERT_EQ(stylesheet->ReparseSheet(css), NS_OK);
}
}
MOZ_GTEST_BENCH(Stylo, Gecko_nsCSSParser_ParseSheet_Bench, GeckoParsingBench);
+
+
+#ifdef MOZ_STYLO
+
+static void ServoSetPropertyByIdBench() {
+ RefPtr<RawServoDeclarationBlock> block = Servo_DeclarationBlock_CreateEmpty().Consume();
+ RefPtr<URLExtraData> data = new URLExtraData(
+ NullPrincipalURI::Create(), nullptr, NullPrincipal::Create());
+
+ NS_NAMED_LITERAL_CSTRING(css_, " 10px");
+ const nsACString& css = css_;
+ ASSERT_TRUE(IsUTF8(css));
+
+ for (int i = 0; i < SETPROPERTY_REPETITIONS; i++) {
+ Servo_DeclarationBlock_SetPropertyById(
+ block,
+ eCSSProperty_width,
+ &css,
+ /* is_important = */ false,
+ data,
+ ParsingMode::Default,
+ eCompatibility_FullStandards,
+ nullptr
+ );
+ }
+}
+
+MOZ_GTEST_BENCH(Stylo, Servo_DeclarationBlock_SetPropertyById_Bench, ServoSetPropertyByIdBench);
+
+#endif