diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp
index 8007878e8fa11001b158737aaaa8e5ce261f0009..f50ef1d92e8dd21f722982d3f371af78704c987c 100644
--- a/tools/dhtnode.cpp
+++ b/tools/dhtnode.cpp
@@ -82,6 +82,12 @@ void printLog(std::ostream& s, char const* m, va_list args) {
     s.put('\n');
 }
 
+template <class DT>
+static double
+print_dt(DT d) {
+    return std::chrono::duration_cast<std::chrono::duration<double>>(d).count();
+}
+
 int
 main(int argc, char **argv)
 {
@@ -197,24 +203,25 @@ main(int argc, char **argv)
             continue;
         }
 
+        auto start = std::chrono::high_resolution_clock::now();
         if (op == "g") {
-            dht.get(id, [](const std::vector<std::shared_ptr<Value>>& values) {
-                std::cout << "Get - found values : " << std::endl;
-                for (const auto& a : values) {
+            dht.get(id, [start](const std::vector<std::shared_ptr<Value>>& values) {
+                auto now = std::chrono::high_resolution_clock::now();
+                std::cout << "Get: found values (after " << print_dt(now-start) << "s)" << std::endl;
+                for (const auto& a : values)
                     std::cout << "\t" << *a << std::endl;
-                }
                 return true;
-            }, [](bool ok) {
-                std::cout << "Get - done : " << (ok ? "success" : "failure") << std::endl;
+            }, [start](bool ok) {
+                auto end = std::chrono::high_resolution_clock::now();
+                std::cout << "Get: " << (ok ? "completed" : "failure") << " (took " << print_dt(end-start) << "s)" << std::endl;
             });
         }
         else if (op == "l") {
             std::cout << id << std::endl;
             dht.listen(id, [](const std::vector<std::shared_ptr<Value>>& values) {
-                std::cout << "Listen - found values : " << std::endl;
-                for (const auto& a : values) {
+                std::cout << "Listen: found values:" << std::endl;
+                for (const auto& a : values)
                     std::cout << "\t" << *a << std::endl;
-                }
                 return true;
             });
         }
@@ -224,8 +231,9 @@ main(int argc, char **argv)
             dht.put(id, dht::Value {
                 dht::ValueType::USER_DATA.id,
                 std::vector<uint8_t> {v.begin(), v.end()}
-            }, [](bool ok) {
-                std::cout << "Put done !" << ok << std::endl;
+            }, [start](bool ok) {
+                auto end = std::chrono::high_resolution_clock::now();
+                std::cout << "Put: " << (ok ? "success" : "failure") << " (took " << print_dt(end-start) << "s)" << std::endl;
             });
         }
         else if (op == "s") {
@@ -234,8 +242,9 @@ main(int argc, char **argv)
             dht.putSigned(id, dht::Value {
                 dht::ValueType::USER_DATA.id,
                 std::vector<uint8_t> {v.begin(), v.end()}
-            }, [](bool ok) {
-                std::cout << "Put signed done !" << ok << std::endl;
+            }, [start](bool ok) {
+                auto end = std::chrono::high_resolution_clock::now();
+                std::cout << "Put signed: " << (ok ? "success" : "failure") << " (took " << print_dt(end-start) << "s)" << std::endl;
             });
         }
         else if (op == "e") {
@@ -245,15 +254,17 @@ main(int argc, char **argv)
             dht.putEncrypted(id, InfoHash(tostr), dht::Value {
                 dht::ValueType::USER_DATA.id,
                 std::vector<uint8_t> {v.begin(), v.end()}
-            }, [](bool ok) {
-                std::cout << "Put encrypted done !" << ok << std::endl;
+            }, [start](bool ok) {
+                auto end = std::chrono::high_resolution_clock::now();
+                std::cout << "Put encrypted: " << (ok ? "success" : "failure") << " (took " << print_dt(end-start) << "s)" << std::endl;
             });
         }
         else if (op == "a") {
             in_port_t port;
             iss >> port;
-            dht.put(id, dht::Value {dht::IpServiceAnnouncement::TYPE.id, dht::IpServiceAnnouncement(port)}, [](bool ok) {
-                std::cout << "Announce done !" << ok << std::endl;
+            dht.put(id, dht::Value {dht::IpServiceAnnouncement::TYPE.id, dht::IpServiceAnnouncement(port)}, [start](bool ok) {
+                auto end = std::chrono::high_resolution_clock::now();
+                std::cout << "Announce: " << (ok ? "success" : "failure") << " (took " << print_dt(end-start) << "s)" << std::endl;
             });
         }
     }