diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index 5830261..b5c4507 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -1431,12 +1431,13 @@
       ":neteq_test_support",
       ":neteq_test_tools",
       "../../api/audio_codecs/opus:audio_encoder_opus",
+      "../../api/test/metrics:global_metrics_logger_and_exporter",
+      "../../api/test/metrics:metric",
       "../../rtc_base:macromagic",
       "../../rtc_base:timeutils",
       "../../system_wrappers",
       "../../system_wrappers:field_trial",
       "../../test:fileutils",
-      "../../test:perf_test",
       "../../test:test_support",
     ]
   }
diff --git a/modules/audio_coding/codecs/opus/opus_complexity_unittest.cc b/modules/audio_coding/codecs/opus/opus_complexity_unittest.cc
index 6388f33..e8c1310 100644
--- a/modules/audio_coding/codecs/opus/opus_complexity_unittest.cc
+++ b/modules/audio_coding/codecs/opus/opus_complexity_unittest.cc
@@ -9,15 +9,20 @@
  */
 
 #include "api/audio_codecs/opus/audio_encoder_opus.h"
+#include "api/test/metrics/global_metrics_logger_and_exporter.h"
+#include "api/test/metrics/metric.h"
 #include "modules/audio_coding/neteq/tools/audio_loop.h"
 #include "rtc_base/time_utils.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
-#include "test/testsupport/perf_test.h"
 
 namespace webrtc {
-
 namespace {
+
+using ::webrtc::test::GetGlobalMetricsLogger;
+using ::webrtc::test::ImprovementDirection;
+using ::webrtc::test::Unit;
+
 int64_t RunComplexityTest(const AudioEncoderOpusConfig& config) {
   // Create encoder.
   constexpr int payload_type = 17;
@@ -46,7 +51,6 @@
   }
   return rtc::TimeMillis() - start_time_ms;
 }
-}  // namespace
 
 // This test encodes an audio file using Opus twice with different bitrates
 // (~11 kbps and 15.5 kbps). The runtime for each is measured, and the ratio
@@ -70,9 +74,10 @@
   config.bitrate_bps = 15500;
   int64_t runtime_15500bps = RunComplexityTest(config);
 
-  test::PrintResult("opus_encoding_complexity_ratio", "", "adaptation_on",
-                    100.0 * runtime_10999bps / runtime_15500bps, "percent",
-                    true);
+  GetGlobalMetricsLogger()->LogSingleValueMetric(
+      "opus_encoding_complexity_ratio", "adaptation_on",
+      100.0 * runtime_10999bps / runtime_15500bps, Unit::kPercent,
+      ImprovementDirection::kNeitherIsBetter);
 }
 
 // This test is identical to the one above, but without the complexity
@@ -90,8 +95,11 @@
   config.bitrate_bps = 15500;
   int64_t runtime_15500bps = RunComplexityTest(config);
 
-  test::PrintResult("opus_encoding_complexity_ratio", "", "adaptation_off",
-                    100.0 * runtime_10999bps / runtime_15500bps, "percent",
-                    true);
+  GetGlobalMetricsLogger()->LogSingleValueMetric(
+      "opus_encoding_complexity_ratio", "adaptation_off",
+      100.0 * runtime_10999bps / runtime_15500bps, Unit::kPercent,
+      ImprovementDirection::kNeitherIsBetter);
 }
+
+}  // namespace
 }  // namespace webrtc
diff --git a/modules/audio_coding/neteq/test/neteq_performance_unittest.cc b/modules/audio_coding/neteq/test/neteq_performance_unittest.cc
index c06772a..961f74a 100644
--- a/modules/audio_coding/neteq/test/neteq_performance_unittest.cc
+++ b/modules/audio_coding/neteq/test/neteq_performance_unittest.cc
@@ -8,10 +8,18 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "api/test/metrics/global_metrics_logger_and_exporter.h"
+#include "api/test/metrics/metric.h"
 #include "modules/audio_coding/neteq/tools/neteq_performance_test.h"
 #include "system_wrappers/include/field_trial.h"
 #include "test/gtest.h"
-#include "test/testsupport/perf_test.h"
+
+namespace webrtc {
+namespace {
+
+using ::webrtc::test::GetGlobalMetricsLogger;
+using ::webrtc::test::ImprovementDirection;
+using ::webrtc::test::Unit;
 
 // Runs a test with 10% packet losses and 10% clock drift, to exercise
 // both loss concealment and time-stretching code.
@@ -20,14 +28,14 @@
   const int kQuickSimulationTimeMs = 100000;
   const int kLossPeriod = 10;  // Drop every 10th packet.
   const double kDriftFactor = 0.1;
-  int64_t runtime = webrtc::test::NetEqPerformanceTest::Run(
-      webrtc::field_trial::IsEnabled("WebRTC-QuickPerfTest")
-          ? kQuickSimulationTimeMs
-          : kSimulationTimeMs,
+  int64_t runtime = test::NetEqPerformanceTest::Run(
+      field_trial::IsEnabled("WebRTC-QuickPerfTest") ? kQuickSimulationTimeMs
+                                                     : kSimulationTimeMs,
       kLossPeriod, kDriftFactor);
   ASSERT_GT(runtime, 0);
-  webrtc::test::PrintResult("neteq_performance", "", "10_pl_10_drift", runtime,
-                            "ms", true);
+  GetGlobalMetricsLogger()->LogSingleValueMetric(
+      "neteq_performance", "10_pl_10_drift", runtime, Unit::kMilliseconds,
+      ImprovementDirection::kNeitherIsBetter);
 }
 
 // Runs a test with neither packet losses nor clock drift, to put
@@ -38,12 +46,15 @@
   const int kQuickSimulationTimeMs = 100000;
   const int kLossPeriod = 0;        // No losses.
   const double kDriftFactor = 0.0;  // No clock drift.
-  int64_t runtime = webrtc::test::NetEqPerformanceTest::Run(
-      webrtc::field_trial::IsEnabled("WebRTC-QuickPerfTest")
-          ? kQuickSimulationTimeMs
-          : kSimulationTimeMs,
+  int64_t runtime = test::NetEqPerformanceTest::Run(
+      field_trial::IsEnabled("WebRTC-QuickPerfTest") ? kQuickSimulationTimeMs
+                                                     : kSimulationTimeMs,
       kLossPeriod, kDriftFactor);
   ASSERT_GT(runtime, 0);
-  webrtc::test::PrintResult("neteq_performance", "", "0_pl_0_drift", runtime,
-                            "ms", true);
+  GetGlobalMetricsLogger()->LogSingleValueMetric(
+      "neteq_performance", "0_pl_0_drift", runtime, Unit::kMilliseconds,
+      ImprovementDirection::kNeitherIsBetter);
 }
+
+}  // namespace
+}  // namespace webrtc
