mirror of
https://github.com/esphome/esphome.git
synced 2026-09-04 03:56:04 +00:00
[benchmark] Enable codegen for api dependency chain (socket, network, mdns)
This commit is contained in:
@@ -1,17 +1,7 @@
|
||||
import esphome.codegen as cg
|
||||
from tests.testing_helpers import ComponentManifestOverride
|
||||
|
||||
# Keep in sync with esphome/components/api/__init__.py
|
||||
NOISE_C_LIB = ("esphome/noise-c", "0.1.11")
|
||||
|
||||
|
||||
def override_manifest(manifest: ComponentManifestOverride) -> None:
|
||||
# Add defines for frame helper headers without running the full api
|
||||
# to_code (which brings in socket/network setup that fails in
|
||||
# benchmark builds).
|
||||
async def to_code(config):
|
||||
cg.add_define("USE_API_PLAINTEXT")
|
||||
cg.add_define("USE_API_NOISE")
|
||||
cg.add_library(*NOISE_C_LIB)
|
||||
|
||||
manifest.to_code = to_code
|
||||
# api must run its to_code to define USE_API, USE_API_PLAINTEXT,
|
||||
# and add the noise-c library dependency.
|
||||
manifest.enable_codegen()
|
||||
|
||||
@@ -92,7 +92,7 @@ static void PlaintextFrame_WriteBatch5(benchmark::State &state) {
|
||||
for (auto _ : state) {
|
||||
for (int i = 0; i < kInnerIterations; i++) {
|
||||
APIBuffer buffer;
|
||||
StaticVector<MessageInfo, 5> messages;
|
||||
MessageInfo messages[5] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
|
||||
|
||||
for (int j = 0; j < 5; j++) {
|
||||
uint16_t offset = buffer.size();
|
||||
@@ -106,11 +106,10 @@ static void PlaintextFrame_WriteBatch5(benchmark::State &state) {
|
||||
ProtoWriteBuffer writer(&buffer, offset + padding);
|
||||
msg.encode(writer);
|
||||
|
||||
messages.push_back(MessageInfo(38, offset, size));
|
||||
messages[j] = MessageInfo(38, offset, size);
|
||||
}
|
||||
|
||||
helper->write_protobuf_messages(ProtoWriteBuffer(&buffer, 0),
|
||||
std::span<const MessageInfo>(messages.data(), messages.size()));
|
||||
helper->write_protobuf_messages(ProtoWriteBuffer(&buffer, 0), std::span<const MessageInfo>(messages, 5));
|
||||
|
||||
if ((i & 0xFF) == 0)
|
||||
drain_socket(read_fd);
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
from tests.testing_helpers import ComponentManifestOverride
|
||||
|
||||
|
||||
def override_manifest(manifest: ComponentManifestOverride) -> None:
|
||||
manifest.enable_codegen()
|
||||
@@ -0,0 +1,5 @@
|
||||
from tests.testing_helpers import ComponentManifestOverride
|
||||
|
||||
|
||||
def override_manifest(manifest: ComponentManifestOverride) -> None:
|
||||
manifest.enable_codegen()
|
||||
@@ -0,0 +1,7 @@
|
||||
from tests.testing_helpers import ComponentManifestOverride
|
||||
|
||||
|
||||
def override_manifest(manifest: ComponentManifestOverride) -> None:
|
||||
# socket must run its to_code to define USE_SOCKET_IMPL_BSD_SOCKETS
|
||||
# which is needed by the api frame helper benchmarks.
|
||||
manifest.enable_codegen()
|
||||
Reference in New Issue
Block a user