是否有一个库可以测量 Java Stream 步骤?
如“使用此流时,在该过滤器中花费 X 时间,在该映射中花费 Y 时间,等等......”?
或者我需要稍微修改一下吗?
最佳答案
根据定义,步骤之间没有“间隔”时间。您定义的方法链仅定义要采取的步骤(方法构建包含这些步骤的内部结构)。
一旦您调用终端运算符(operator),所有步骤都会按不确定的顺序执行。如果您从不调用终端运算符(operator),则也不会执行任何步骤。
我所说的不确定顺序是这样的:
intstream.peek(operation1).peek(operation2).sum();
您不知道是否调用了 operation1
,然后调用了 operation2
,然后再次调用了 operation1
,或者是否调用了 operation1
code> 被调用了很多次,然后 operation2
被调用了很多次,或者其他什么。 (我希望我的说法是正确的。[编辑] correct)这可能取决于虚拟机的实现来权衡存储与时间复杂度。
您能做的最好的事情就是测量每个操作所花费的时间,因为您可以完全控制每个操作。流引擎花费的时间很难衡量。但是,请注意,当您执行此操作时,您将违反流 API 的操作应无副作用的要求。因此,不要在生产代码中使用它。
关于java - 测量完成各个流步骤的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58181342/