code: func Profile(w io.Writer, r io.Reader) (pw io.Writer, pr io.Reader, done func() TimeProfile) {
  	return profile(clock.New(), w, r)
  }
docs: // Profile will wrap a writer and reader pair and profile where
  // time is spent: writing or reading. The result is returned when
  // the `done` func is called. The `done` func can be called multiple
  // times.
  //
  // There is a small performance overhead of ~µs per Read/Write call.
  // This is negligible in most I/O workloads. If the overhead is too
  // much for your needs, use the `ProfileSample` call.