我有一个方法打算对数据 IO 做一些简单的统计,如下所示。
def ioStatSink[T <: { def length: Int }](): Sink[T, Future[(Long, Long)]] = Sink.fold((0L, 0L))((acc, bytes) => (acc._1 + 1L, acc._2 + bytes.length))
因为我希望它能够处理具有{ def length: Int }
方法的不同数据类型,所以我将其设为通用。
问题是,这个方法调用使用了反射。
由于这种方法被调用了数百万次,我不希望它有性能问题。
我知道使用反射进行类实例化会降低性能,但是这个方法调用怎么样?
(关于该方法的另一个问题是,它不能适应具有 方法的类型,有{ def length: Long }
什么建议来处理这个问题吗?)