This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git


The following commit(s) were added to refs/heads/main by this push:
     new c90a881  PROTON-2321 Add benchmark for pn_data_t initialization from 
PROTON-2229 (#286)
c90a881 is described below

commit c90a881af16e643128795353df92c2c1835ead81
Author: Jiri Daněk <jda...@redhat.com>
AuthorDate: Mon Apr 19 22:32:32 2021 +0200

    PROTON-2321 Add benchmark for pn_data_t initialization from PROTON-2229 
(#286)
---
 c/benchmarks/CMakeLists.txt       |  7 ++++-
 c/benchmarks/message-encoding.cpp | 57 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 1 deletion(-)

diff --git a/c/benchmarks/CMakeLists.txt b/c/benchmarks/CMakeLists.txt
index e2c2a62..e3d244e 100644
--- a/c/benchmarks/CMakeLists.txt
+++ b/c/benchmarks/CMakeLists.txt
@@ -27,7 +27,12 @@ find_package(benchmark REQUIRED)
 get_source_file_property(COMPILE_FLAGS benchmarks_main.cpp 
current_compile_flags)
 set_source_files_properties(benchmarks_main.cpp PROPERTIES COMPILE_FLAGS 
"${current_compile_flags} -Wno-pedantic")
 
-add_executable(c-benchmarks benchmarks_main.cpp connection-driver.cpp 
message-encoding_list.cpp message-encoding_map.cpp)
+add_executable(c-benchmarks benchmarks_main.cpp
+        connection-driver.cpp
+        message-encoding.cpp
+        message-encoding_list.cpp
+        message-encoding_map.cpp
+)
 target_link_libraries(c-benchmarks benchmark pthread qpid-proton)
 
 add_test(NAME c-benchmarks COMMAND c-benchmarks)
diff --git a/c/benchmarks/message-encoding.cpp 
b/c/benchmarks/message-encoding.cpp
new file mode 100644
index 0000000..685a10b
--- /dev/null
+++ b/c/benchmarks/message-encoding.cpp
@@ -0,0 +1,57 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#include "proton/message.h"
+
+#include <benchmark/benchmark.h>
+#include <core/data.h>
+#include <proton/netaddr.h>
+
+#include <cstdlib>
+#include <cstring>
+
+/** Initialize message, don't decode?
+ * Issues:
+ *   PROTON-2229 pn_data_t initialization lead to low performance
+ */
+static void BM_Encode10MbMessage(benchmark::State &state) {
+    const size_t size = 10 * 1024 * 1024;
+    char *payload = static_cast<char *>(malloc(size));
+    pn_bytes_t bytes = pn_bytes(size, payload);
+
+    for (auto _ : state) {
+        pn_message_t *message = pn_message();
+        pn_data_t *body = pn_message_body(message);
+        for (size_t i = 0; i < state.range(0); i++) {
+            pn_data_put_binary(body, bytes);
+        }
+
+        pn_message_free(message);
+    }
+
+    free(payload);
+}
+
+BENCHMARK(BM_Encode10MbMessage)
+        ->Arg(1)
+        ->Arg(2)
+        ->ArgName("put_binary count")
+        ->Unit(benchmark::kMillisecond);

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to