diff --git a/test/cpp/qps/server.h b/test/cpp/qps/server.h
index c0dac96d8b835a7cce501dfa1e973d773e7fe429..df27a4368eafd529ef4b99f6550afa9d5c9cfbf3 100644
--- a/test/cpp/qps/server.h
+++ b/test/cpp/qps/server.h
@@ -80,8 +80,11 @@ class Server {
       return false;
     }
     payload->set_type(type);
-    std::unique_ptr<char[]> body(new char[size]());
-    payload->set_body(body.get(), size);
+    // Don't waste time creating a new payload of identical size.
+    if (payload->body().length() != (size_t)size) {
+      std::unique_ptr<char[]> body(new char[size]());
+      payload->set_body(body.get(), size);
+    }
     return true;
   }