Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7563df3f authored by Christine Tsai's avatar Christine Tsai Committed by Automerger Merge Worker
Browse files

Merge "Update the cc_benchmark to use the new socket schema" into rvc-dev am:...

Merge "Update the cc_benchmark to use the new socket schema" into rvc-dev am: be88f7df am: 819aa0f9

Change-Id: I1bc44318bbf2ad11a29d1964b91ab1de01650667
parents 63c45b2c 819aa0f9
Loading
Loading
Loading
Loading
+49 −49
Original line number Diff line number Diff line
@@ -378,55 +378,55 @@ cc_test {
// statsd micro benchmark
//#############################

//cc_benchmark {
//    name: "statsd_benchmark",
//    defaults: ["statsd_defaults"],
//
//    srcs: [
//        // atom_field_options.proto needs field_options.proto, but that is
//        // not included in libprotobuf-cpp-lite, so compile it here.
//        ":libprotobuf-internal-protos",
//
//        "benchmark/duration_metric_benchmark.cpp",
//        "benchmark/filter_value_benchmark.cpp",
//        "benchmark/get_dimensions_for_condition_benchmark.cpp",
//        "benchmark/hello_world_benchmark.cpp",
//        "benchmark/log_event_benchmark.cpp",
//        "benchmark/main.cpp",
//        "benchmark/metric_util.cpp",
//        "benchmark/stats_write_benchmark.cpp",
//        "src/atom_field_options.proto",
//        "src/atoms.proto",
//        "src/stats_log.proto",
//    ],
//
//    proto: {
//        type: "lite",
//        include_dirs: ["external/protobuf/src"],
//    },
//
//    cflags: [
//        "-Wall",
//        "-Werror",
//        "-Wno-unused-parameter",
//        "-Wno-unused-variable",
//        "-Wno-unused-function",
//
//        // Bug: http://b/29823425 Disable -Wvarargs for Clang update to r271374
//        "-Wno-varargs",
//    ],
//
//    static_libs: [
//        "libplatformprotos",
//    ],
//
//    shared_libs: [
//        "libgtest_prod",
//        "libprotobuf-cpp-lite",
//        "libstatslog",
//        "libstatssocket",
//    ],
//}
cc_benchmark {
    name: "statsd_benchmark",
    defaults: ["statsd_defaults"],

    srcs: [
        // atom_field_options.proto needs field_options.proto, but that is
        // not included in libprotobuf-cpp-lite, so compile it here.
        ":libprotobuf-internal-protos",

        "benchmark/duration_metric_benchmark.cpp",
        "benchmark/filter_value_benchmark.cpp",
        "benchmark/get_dimensions_for_condition_benchmark.cpp",
        "benchmark/hello_world_benchmark.cpp",
        "benchmark/log_event_benchmark.cpp",
        "benchmark/main.cpp",
        "benchmark/metric_util.cpp",
        "benchmark/stats_write_benchmark.cpp",
        "src/atom_field_options.proto",
        "src/atoms.proto",
        "src/stats_log.proto",
    ],

    proto: {
        type: "lite",
        include_dirs: ["external/protobuf/src"],
    },

    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
        "-Wno-unused-variable",
        "-Wno-unused-function",

        // Bug: http://b/29823425 Disable -Wvarargs for Clang update to r271374
        "-Wno-varargs",
    ],

    static_libs: [
        "libplatformprotos",
        "libstatssocket_private",
    ],

    shared_libs: [
        "libgtest_prod",
        "libprotobuf-cpp-lite",
        "libstatslog",
    ],
}

// ====  java proto device library (for test only)  ==============================
java_library {
+133 −139
Original line number Diff line number Diff line
@@ -137,77 +137,74 @@ static void BM_DurationMetricNoLink(benchmark::State& state) {
    int64_t bucketSizeNs =
            TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1000000LL;


    std::vector<AttributionNodeInternal> attributions1 = {
            CreateAttribution(111, "App1"), CreateAttribution(222, "GMSCoreModule1"),
            CreateAttribution(222, "GMSCoreModule2")};

    std::vector<AttributionNodeInternal> attributions2 = {
            CreateAttribution(333, "App2"), CreateAttribution(222, "GMSCoreModule1"),
            CreateAttribution(555, "GMSCoreModule2")};

    std::vector<std::unique_ptr<LogEvent>> events;

    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_OFF,
                                                   bucketStartTimeNs + 11));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_ON,
                                                   bucketStartTimeNs + 40));

    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_OFF,
                                                   bucketStartTimeNs + 102));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_ON,
                                                   bucketStartTimeNs + 450));

    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_OFF,
                                                   bucketStartTimeNs + 650));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_ON,
                                                   bucketStartTimeNs + bucketSizeNs + 100));

    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_OFF,
                                                   bucketStartTimeNs + bucketSizeNs + 640));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_ON,
                                                   bucketStartTimeNs + bucketSizeNs + 650));

    events.push_back(CreateStartScheduledJobEvent(
            {CreateAttribution(9999, "")}, "job0", bucketStartTimeNs + 2));
    events.push_back(CreateFinishScheduledJobEvent(
            {CreateAttribution(9999, "")}, "job0",bucketStartTimeNs + 101));

    events.push_back(CreateStartScheduledJobEvent(
            {CreateAttribution(9999, "")}, "job2", bucketStartTimeNs + 201));
    events.push_back(CreateFinishScheduledJobEvent(
            {CreateAttribution(9999, "")}, "job2",bucketStartTimeNs + 500));

    events.push_back(CreateStartScheduledJobEvent(
            {CreateAttribution(8888, "")}, "job2", bucketStartTimeNs + 600));
    events.push_back(CreateFinishScheduledJobEvent(
            {CreateAttribution(8888, "")}, "job2",bucketStartTimeNs + bucketSizeNs + 850));

    events.push_back(CreateStartScheduledJobEvent(
            {CreateAttribution(8888, "")}, "job1", bucketStartTimeNs + bucketSizeNs + 600));
    events.push_back(CreateFinishScheduledJobEvent(
            {CreateAttribution(8888, "")}, "job1", bucketStartTimeNs + bucketSizeNs + 900));

    events.push_back(CreateSyncStartEvent(attributions1, "ReadEmail",
                                          bucketStartTimeNs + 10));
    events.push_back(CreateSyncEndEvent(attributions1, "ReadEmail",
                                        bucketStartTimeNs + 50));

    events.push_back(CreateSyncStartEvent(attributions1, "ReadEmail",
                                          bucketStartTimeNs + 200));
    events.push_back(CreateSyncEndEvent(attributions1, "ReadEmail",
                                        bucketStartTimeNs + bucketSizeNs + 300));

    events.push_back(CreateSyncStartEvent(attributions1, "ReadDoc",
                                          bucketStartTimeNs + 400));
    events.push_back(CreateSyncEndEvent(attributions1, "ReadDoc",
                                        bucketStartTimeNs + bucketSizeNs - 1));

    events.push_back(CreateSyncStartEvent(attributions2, "ReadEmail",
                                          bucketStartTimeNs + 401));
    events.push_back(CreateSyncEndEvent(attributions2, "ReadEmail",
                                        bucketStartTimeNs + bucketSizeNs + 700));

    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 11,
                                                   android::view::DISPLAY_STATE_OFF));
    events.push_back(
            CreateScreenStateChangedEvent(bucketStartTimeNs + 40, android::view::DISPLAY_STATE_ON));

    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 102,
                                                   android::view::DISPLAY_STATE_OFF));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 450,
                                                   android::view::DISPLAY_STATE_ON));

    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 650,
                                                   android::view::DISPLAY_STATE_OFF));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + bucketSizeNs + 100,
                                                   android::view::DISPLAY_STATE_ON));

    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + bucketSizeNs + 640,
                                                   android::view::DISPLAY_STATE_OFF));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + bucketSizeNs + 650,
                                                   android::view::DISPLAY_STATE_ON));

    vector<int> attributionUids1 = {9999};
    vector<string> attributionTags1 = {""};
    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + 2, attributionUids1,
                                                  attributionTags1, "job0"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + 101, attributionUids1,
                                                   attributionTags1, "job0"));

    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + 201, attributionUids1,
                                                  attributionTags1, "job2"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + 500, attributionUids1,
                                                   attributionTags1, "job2"));

    vector<int> attributionUids2 = {8888};
    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + 600, attributionUids2,
                                                  attributionTags1, "job2"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + bucketSizeNs + 850,
                                                   attributionUids2, attributionTags1, "job2"));

    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + bucketSizeNs + 600,
                                                  attributionUids2, attributionTags1, "job1"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + bucketSizeNs + 900,
                                                   attributionUids2, attributionTags1, "job1"));

    vector<int> attributionUids3 = {111, 222, 222};
    vector<string> attributionTags3 = {"App1", "GMSCoreModule1", "GMSCoreModule2"};
    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 10, attributionUids3,
                                          attributionTags3, "ReadEmail"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + 50, attributionUids3, attributionTags3,
                                        "ReadEmail"));

    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 200, attributionUids3,
                                          attributionTags3, "ReadEmail"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + bucketSizeNs + 300, attributionUids3,
                                        attributionTags3, "ReadEmail"));

    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 400, attributionUids3,
                                          attributionTags3, "ReadDoc"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + bucketSizeNs - 1, attributionUids3,
                                        attributionTags3, "ReadDoc"));

    vector<int> attributionUids4 = {333, 222, 555};
    vector<string> attributionTags4 = {"App2", "GMSCoreModule1", "GMSCoreModule2"};
    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 401, attributionUids4,
                                          attributionTags4, "ReadEmail"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + bucketSizeNs + 700, attributionUids4,
                                        attributionTags4, "ReadEmail"));
    sortLogEventsByTimestamp(&events);

    while (state.KeepRunning()) {
@@ -230,78 +227,75 @@ static void BM_DurationMetricLink(benchmark::State& state) {
    int64_t bucketSizeNs =
            TimeUnitToBucketSizeInMillis(config.duration_metric(0).bucket()) * 1000000LL;

    std::vector<AttributionNodeInternal> attributions1 = {
            CreateAttribution(111, "App1"), CreateAttribution(222, "GMSCoreModule1"),
            CreateAttribution(222, "GMSCoreModule2")};

    std::vector<AttributionNodeInternal> attributions2 = {
            CreateAttribution(333, "App2"), CreateAttribution(222, "GMSCoreModule1"),
            CreateAttribution(555, "GMSCoreModule2")};

    std::vector<AttributionNodeInternal> attributions3 = {
            CreateAttribution(444, "App3"), CreateAttribution(222, "GMSCoreModule1"),
            CreateAttribution(555, "GMSCoreModule2")};

    std::vector<std::unique_ptr<LogEvent>> events;

    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_OFF,
                                                   bucketStartTimeNs + 55));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_ON,
                                                   bucketStartTimeNs + 120));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_OFF,
                                                   bucketStartTimeNs + 121));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_ON,
                                                   bucketStartTimeNs + 450));

    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_OFF,
                                                   bucketStartTimeNs + 501));
    events.push_back(CreateScreenStateChangedEvent(android::view::DISPLAY_STATE_ON,
                                                   bucketStartTimeNs + bucketSizeNs + 100));

    events.push_back(CreateStartScheduledJobEvent(
            {CreateAttribution(111, "App1")}, "job1", bucketStartTimeNs + 1));
    events.push_back(CreateFinishScheduledJobEvent(
            {CreateAttribution(111, "App1")}, "job1",bucketStartTimeNs + 101));

    events.push_back(CreateStartScheduledJobEvent(
            {CreateAttribution(333, "App2")}, "job2", bucketStartTimeNs + 201));
    events.push_back(CreateFinishScheduledJobEvent(
            {CreateAttribution(333, "App2")}, "job2",bucketStartTimeNs + 500));
    events.push_back(CreateStartScheduledJobEvent(
            {CreateAttribution(333, "App2")}, "job2", bucketStartTimeNs + 600));
    events.push_back(CreateFinishScheduledJobEvent(
            {CreateAttribution(333, "App2")}, "job2",
            bucketStartTimeNs + bucketSizeNs + 850));

    events.push_back(
        CreateStartScheduledJobEvent({CreateAttribution(444, "App3")}, "job3",
                                     bucketStartTimeNs + bucketSizeNs - 2));
    events.push_back(
        CreateFinishScheduledJobEvent({CreateAttribution(444, "App3")}, "job3",
                                      bucketStartTimeNs + bucketSizeNs + 900));

    events.push_back(CreateSyncStartEvent(attributions1, "ReadEmail",
                                          bucketStartTimeNs + 50));
    events.push_back(CreateSyncEndEvent(attributions1, "ReadEmail",
                                        bucketStartTimeNs + 110));

    events.push_back(CreateSyncStartEvent(attributions2, "ReadEmail",
                                          bucketStartTimeNs + 300));
    events.push_back(CreateSyncEndEvent(attributions2, "ReadEmail",
                                        bucketStartTimeNs + bucketSizeNs + 700));
    events.push_back(CreateSyncStartEvent(attributions2, "ReadDoc",
                                          bucketStartTimeNs + 400));
    events.push_back(CreateSyncEndEvent(attributions2, "ReadDoc",
                                        bucketStartTimeNs + bucketSizeNs - 1));

    events.push_back(CreateSyncStartEvent(attributions3, "ReadDoc",
                                          bucketStartTimeNs + 550));
    events.push_back(CreateSyncEndEvent(attributions3, "ReadDoc",
                                        bucketStartTimeNs + 800));
    events.push_back(CreateSyncStartEvent(attributions3, "ReadDoc",
                                          bucketStartTimeNs + bucketSizeNs - 1));
    events.push_back(CreateSyncEndEvent(attributions3, "ReadDoc",
                                        bucketStartTimeNs + bucketSizeNs + 700));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 55,
                                                   android::view::DISPLAY_STATE_OFF));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 120,
                                                   android::view::DISPLAY_STATE_ON));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 121,
                                                   android::view::DISPLAY_STATE_OFF));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 450,
                                                   android::view::DISPLAY_STATE_ON));

    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + 501,
                                                   android::view::DISPLAY_STATE_OFF));
    events.push_back(CreateScreenStateChangedEvent(bucketStartTimeNs + bucketSizeNs + 100,
                                                   android::view::DISPLAY_STATE_ON));

    vector<int> attributionUids1 = {111};
    vector<string> attributionTags1 = {"App1"};
    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + 1, attributionUids1,
                                                  attributionTags1, "job1"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + 101, attributionUids1,
                                                   attributionTags1, "job1"));

    vector<int> attributionUids2 = {333};
    vector<string> attributionTags2 = {"App2"};
    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + 201, attributionUids2,
                                                  attributionTags2, "job2"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + 500, attributionUids2,
                                                   attributionTags2, "job2"));
    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + 600, attributionUids2,
                                                  attributionTags2, "job2"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + bucketSizeNs + 850,
                                                   attributionUids2, attributionTags2, "job2"));

    vector<int> attributionUids3 = {444};
    vector<string> attributionTags3 = {"App3"};
    events.push_back(CreateStartScheduledJobEvent(bucketStartTimeNs + bucketSizeNs - 2,
                                                  attributionUids3, attributionTags3, "job3"));
    events.push_back(CreateFinishScheduledJobEvent(bucketStartTimeNs + bucketSizeNs + 900,
                                                   attributionUids3, attributionTags3, "job3"));

    vector<int> attributionUids4 = {111, 222, 222};
    vector<string> attributionTags4 = {"App1", "GMSCoreModule1", "GMSCoreModule2"};
    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 50, attributionUids4,
                                          attributionTags4, "ReadEmail"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + 110, attributionUids4, attributionTags4,
                                        "ReadEmail"));

    vector<int> attributionUids5 = {333, 222, 555};
    vector<string> attributionTags5 = {"App2", "GMSCoreModule1", "GMSCoreModule2"};
    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 300, attributionUids5,
                                          attributionTags5, "ReadEmail"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + bucketSizeNs + 700, attributionUids5,
                                        attributionTags5, "ReadEmail"));
    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 400, attributionUids5,
                                          attributionTags5, "ReadDoc"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + bucketSizeNs - 1, attributionUids5,
                                        attributionTags5, "ReadDoc"));

    vector<int> attributionUids6 = {444, 222, 555};
    vector<string> attributionTags6 = {"App3", "GMSCoreModule1", "GMSCoreModule2"};
    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + 550, attributionUids6,
                                          attributionTags6, "ReadDoc"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + 800, attributionUids6, attributionTags6,
                                        "ReadDoc"));
    events.push_back(CreateSyncStartEvent(bucketStartTimeNs + bucketSizeNs - 1, attributionUids6,
                                          attributionTags6, "ReadDoc"));
    events.push_back(CreateSyncEndEvent(bucketStartTimeNs + bucketSizeNs + 700, attributionUids6,
                                        attributionTags6, "ReadDoc"));
    sortLogEventsByTimestamp(&events);

    while (state.KeepRunning()) {
+26 −11
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include "HashableDimensionKey.h"
#include "logd/LogEvent.h"
#include "stats_log_util.h"
#include "stats_event.h"

namespace android {
namespace os {
@@ -27,16 +28,30 @@ namespace statsd {
using std::vector;

static void createLogEventAndMatcher(LogEvent* event, FieldMatcher* field_matcher) {
    AttributionNodeInternal node;
    node.set_uid(100);
    node.set_tag("LOCATION");
    AStatsEvent* statsEvent = AStatsEvent_obtain();
    AStatsEvent_setAtomId(statsEvent, 1);
    AStatsEvent_overwriteTimestamp(statsEvent, 100000);

    std::vector<AttributionNodeInternal> nodes = {node, node};
    event->write(nodes);
    event->write(3.2f);
    event->write("LOCATION");
    event->write((int64_t)990);
    event->init();
    std::vector<int> attributionUids = {100, 100};
    std::vector<string> attributionTags = {"LOCATION", "LOCATION"};

    vector<const char*> cTags(attributionTags.size());
    for (int i = 0; i < cTags.size(); i++) {
        cTags[i] = attributionTags[i].c_str();
    }

    AStatsEvent_writeAttributionChain(statsEvent,
                                      reinterpret_cast<const uint32_t*>(attributionUids.data()),
                                      cTags.data(), attributionUids.size());
    AStatsEvent_writeFloat(statsEvent, 3.2f);
    AStatsEvent_writeString(statsEvent, "LOCATION");
    AStatsEvent_writeInt64(statsEvent, 990);
    AStatsEvent_build(statsEvent);

    size_t size;
    uint8_t* buf = AStatsEvent_getBuffer(statsEvent, &size);
    event->parseBuffer(buf, size);
    AStatsEvent_release(statsEvent);

    field_matcher->set_field(1);
    auto child = field_matcher->add_child();
@@ -46,7 +61,7 @@ static void createLogEventAndMatcher(LogEvent* event, FieldMatcher *field_matche
}

static void BM_FilterValue(benchmark::State& state) {
    LogEvent event(1, 100000);
    LogEvent event(/*uid=*/0, /*pid=*/0);
    FieldMatcher field_matcher;
    createLogEventAndMatcher(&event, &field_matcher);

+25 −10
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include "HashableDimensionKey.h"
#include "logd/LogEvent.h"
#include "stats_log_util.h"
#include "stats_event.h"

namespace android {
namespace os {
@@ -27,16 +28,30 @@ namespace statsd {
using std::vector;

static void createLogEventAndLink(LogEvent* event, Metric2Condition *link) {
    AttributionNodeInternal node;
    node.set_uid(100);
    node.set_tag("LOCATION");
    AStatsEvent* statsEvent = AStatsEvent_obtain();
    AStatsEvent_setAtomId(statsEvent, 1);
    AStatsEvent_overwriteTimestamp(statsEvent, 100000);

    std::vector<AttributionNodeInternal> nodes = {node, node};
    event->write(nodes);
    event->write(3.2f);
    event->write("LOCATION");
    event->write((int64_t)990);
    event->init();
    std::vector<int> attributionUids = {100, 100};
    std::vector<string> attributionTags = {"LOCATION", "LOCATION"};

    vector<const char*> cTags(attributionTags.size());
    for (int i = 0; i < cTags.size(); i++) {
        cTags[i] = attributionTags[i].c_str();
    }

    AStatsEvent_writeAttributionChain(statsEvent,
                                      reinterpret_cast<const uint32_t*>(attributionUids.data()),
                                      cTags.data(), attributionUids.size());
    AStatsEvent_writeFloat(statsEvent, 3.2f);
    AStatsEvent_writeString(statsEvent, "LOCATION");
    AStatsEvent_writeInt64(statsEvent, 990);
    AStatsEvent_build(statsEvent);

    size_t size;
    uint8_t* buf = AStatsEvent_getBuffer(statsEvent, &size);
    event->parseBuffer(buf, size);
    AStatsEvent_release(statsEvent);

    link->conditionId = 1;

@@ -54,7 +69,7 @@ static void createLogEventAndLink(LogEvent* event, Metric2Condition *link) {

static void BM_GetDimensionInCondition(benchmark::State& state) {
    Metric2Condition link;
    LogEvent event(1, 100000);
    LogEvent event(/*uid=*/0, /*pid=*/0);
    createLogEventAndLink(&event, &link);

    while (state.KeepRunning()) {
+2 −1
Original line number Diff line number Diff line
@@ -39,7 +39,8 @@ static void BM_LogEventCreation(benchmark::State& state) {
    uint8_t msg[LOGGER_ENTRY_MAX_PAYLOAD];
    size_t size = createAndParseStatsEvent(msg);
    while (state.KeepRunning()) {
        benchmark::DoNotOptimize(LogEvent(msg, size, /*uid=*/ 1000, /*pid=*/ 1001));
        LogEvent event(/*uid=*/ 1000, /*pid=*/ 1001);
        benchmark::DoNotOptimize(event.parseBuffer(msg, size));
    }
}
BENCHMARK(BM_LogEventCreation);
Loading