diff --git a/internal/benchmarks/micro/micro_test.go b/internal/benchmarks/micro/micro_test.go
index 20a6fea..097a326 100644
--- a/internal/benchmarks/micro/micro_test.go
+++ b/internal/benchmarks/micro/micro_test.go
@@ -11,7 +11,10 @@
 import (
 	"testing"
 
+	"google.golang.org/protobuf/internal/impl"
 	"google.golang.org/protobuf/proto"
+	"google.golang.org/protobuf/reflect/protoregistry"
+	"google.golang.org/protobuf/runtime/protoiface"
 	"google.golang.org/protobuf/types/known/emptypb"
 
 	micropb "google.golang.org/protobuf/internal/testprotos/benchmarks/micro"
@@ -45,6 +48,19 @@
 			}
 		})
 	})
+	b.Run("Wire/Validate", func(b *testing.B) {
+		b.RunParallel(func(pb *testing.PB) {
+			mt := (&emptypb.Empty{}).ProtoReflect().Type()
+			opts := protoiface.UnmarshalOptions{
+				Resolver: protoregistry.GlobalTypes,
+			}
+			for pb.Next() {
+				if got, want := impl.Validate([]byte{}, mt, opts), impl.ValidationValidInitialized; got != want {
+					b.Fatalf("Validate = %v, want %v", got, want)
+				}
+			}
+		})
+	})
 }
 
 // BenchmarkRepeatedInt32 tests a message containing 500 non-packed repeated int32s.
@@ -83,6 +99,19 @@
 			}
 		})
 	})
+	b.Run("Wire/Validate", func(b *testing.B) {
+		b.RunParallel(func(pb *testing.PB) {
+			mt := (&testpb.TestAllTypes{}).ProtoReflect().Type()
+			opts := protoiface.UnmarshalOptions{
+				Resolver: protoregistry.GlobalTypes,
+			}
+			for pb.Next() {
+				if got, want := impl.Validate(w, mt, opts), impl.ValidationValidInitialized; got != want {
+					b.Fatalf("Validate = %v, want %v", got, want)
+				}
+			}
+		})
+	})
 }
 
 // BenchmarkRequired tests a message containing a required field.
@@ -131,4 +160,17 @@
 			}
 		})
 	})
+	b.Run("Wire/Validate", func(b *testing.B) {
+		b.RunParallel(func(pb *testing.PB) {
+			mt := (&micropb.SixteenRequired{}).ProtoReflect().Type()
+			opts := protoiface.UnmarshalOptions{
+				Resolver: protoregistry.GlobalTypes,
+			}
+			for pb.Next() {
+				if got, want := impl.Validate(w, mt, opts), impl.ValidationValidInitialized; got != want {
+					b.Fatalf("Validate = %v, want %v", got, want)
+				}
+			}
+		})
+	})
 }
