[PATCH] qemu: remove unnecessary strlen for LINE_ENDING

renlei1998@163.com posted 1 patch 2 years, 7 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20210901030456.54635-1-renlei1998@163.com
src/qemu/qemu_agent.c        | 5 +++--
src/qemu/qemu_monitor_json.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
[PATCH] qemu: remove unnecessary strlen for LINE_ENDING
Posted by renlei1998@163.com 2 years, 7 months ago
From: Ren Lei <ren.lei4@zte.com.cn>

the length of LINE_ENDING is static, it's a waste to call
strlen every time.

Signed-off-by: Ren Lei <ren.lei4@zte.com.cn>
---
 src/qemu/qemu_agent.c        | 5 +++--
 src/qemu/qemu_monitor_json.c | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 5f421be6f6..3a453b4c58 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -47,6 +47,7 @@
 VIR_LOG_INIT("qemu.qemu_agent");
 
 #define LINE_ENDING "\n"
+#define LINE_ENDING_LENGTH 1
 
 #define DEBUG_IO 0
 #define DEBUG_RAW_IO 0
@@ -341,11 +342,11 @@ static int qemuAgentIOProcessData(qemuAgent *agent,
 
         if (nl) {
             int got = nl - (data + used);
-            for (i = 0; i < strlen(LINE_ENDING); i++)
+            for (i = 0; i < LINE_ENDING_LENGTH; i++)
                 data[used + got + i] = '\0';
             if (qemuAgentIOProcessLine(agent, data + used, msg) < 0)
                 return -1;
-            used += got + strlen(LINE_ENDING);
+            used += got + LINE_ENDING_LENGTH;
         } else {
             break;
         }
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 8d3c4031a6..8b77b3cdaa 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -51,6 +51,7 @@ VIR_LOG_INIT("qemu.qemu_monitor_json");
 #define QOM_CPU_PATH  "/machine/unattached/device[0]"
 
 #define LINE_ENDING "\r\n"
+#define LINE_ENDING_LENGTH 2
 
 VIR_ENUM_IMPL(qemuMonitorJob,
               QEMU_MONITOR_JOB_TYPE_LAST,
@@ -271,7 +272,7 @@ int qemuMonitorJSONIOProcess(qemuMonitor *mon,
             int got = nl - (data + used);
             char *line;
             line = g_strndup(data + used, got);
-            used += got + strlen(LINE_ENDING);
+            used += got + LINE_ENDING_LENGTH;
             line[got] = '\0'; /* kill \n */
             if (qemuMonitorJSONIOProcessLine(mon, line, msg) < 0) {
                 VIR_FREE(line);
-- 
2.27.0


Re: [PATCH] qemu: remove unnecessary strlen for LINE_ENDING
Posted by Laine Stump 2 years, 7 months ago
On 8/31/21 11:04 PM, renlei1998@163.com wrote:
> From: Ren Lei <ren.lei4@zte.com.cn>
> 
> the length of LINE_ENDING is static, it's a waste to call
> strlen every time.

AFAIK gcc optimizes out calls to strlen of a literal constant string, 
making this hand-optimization unnecessary.

> 
> Signed-off-by: Ren Lei <ren.lei4@zte.com.cn>
> ---
>   src/qemu/qemu_agent.c        | 5 +++--
>   src/qemu/qemu_monitor_json.c | 3 ++-
>   2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
> index 5f421be6f6..3a453b4c58 100644
> --- a/src/qemu/qemu_agent.c
> +++ b/src/qemu/qemu_agent.c
> @@ -47,6 +47,7 @@
>   VIR_LOG_INIT("qemu.qemu_agent");
>   
>   #define LINE_ENDING "\n"
> +#define LINE_ENDING_LENGTH 1
>   
>   #define DEBUG_IO 0
>   #define DEBUG_RAW_IO 0
> @@ -341,11 +342,11 @@ static int qemuAgentIOProcessData(qemuAgent *agent,
>   
>           if (nl) {
>               int got = nl - (data + used);
> -            for (i = 0; i < strlen(LINE_ENDING); i++)
> +            for (i = 0; i < LINE_ENDING_LENGTH; i++)
>                   data[used + got + i] = '\0';
>               if (qemuAgentIOProcessLine(agent, data + used, msg) < 0)
>                   return -1;
> -            used += got + strlen(LINE_ENDING);
> +            used += got + LINE_ENDING_LENGTH;
>           } else {
>               break;
>           }
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index 8d3c4031a6..8b77b3cdaa 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -51,6 +51,7 @@ VIR_LOG_INIT("qemu.qemu_monitor_json");
>   #define QOM_CPU_PATH  "/machine/unattached/device[0]"
>   
>   #define LINE_ENDING "\r\n"
> +#define LINE_ENDING_LENGTH 2
>   
>   VIR_ENUM_IMPL(qemuMonitorJob,
>                 QEMU_MONITOR_JOB_TYPE_LAST,
> @@ -271,7 +272,7 @@ int qemuMonitorJSONIOProcess(qemuMonitor *mon,
>               int got = nl - (data + used);
>               char *line;
>               line = g_strndup(data + used, got);
> -            used += got + strlen(LINE_ENDING);
> +            used += got + LINE_ENDING_LENGTH;
>               line[got] = '\0'; /* kill \n */
>               if (qemuMonitorJSONIOProcessLine(mon, line, msg) < 0) {
>                   VIR_FREE(line);
>