paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Does the Stream API Benefit from Special Debugging Facilities? A Controlled Experiment on Loops and Streams with Specific Debuggers

Stream API 是否受益于专门的调试设施?关于循环与流及特定调试器的受控实验
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)2023匹配度 1/10 · 该论文是Java Stream API调试工具的受控实验研究,属于经验软件工程/人机交互式调试,不涉及静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析等用户核心方向。引用 1 inbox
Jan Reichl, Stefan Hanenberg, Volker Gruhn
crossref: 2026-09-12dblp: 2026-09-12

AI 速览

一句话:通过受控实验比较逐步调试器与流调试器,发现流调试器整体高效但效果受是否预先知道失败对象调节。

Java 的 Stream API 以声明式集合操作替代传统循环,但其专用调试器是否优于面向循环的逐步调试器尚不清楚。本文开展受控实验,比较使用逐步调试器和流调试器调试过滤操作的表现。结果显示,在实验设定下流调试器有显著且很大的正向效应(p<.001, ηp²=.899,M_stepwise/M_stream≈204%)。然而,是否预先知道可用于识别失败过滤器的对象与调试器存在强序数交互(p<.001, ηp²=.928):当预先知道该对象时,流调试器反而不如逐步调试器(比值≈72%)。因此,不能脱离其他变量判断循环或流上调试更易,论文贡献也在于识别这些额外因素。

问题
研究问题:在 Java 中调试集合过滤操作时,针对 Stream API 的专用调试器是否比传统逐步调试器更高效,以及哪些因素会影响其效果。
方法
方法:开展受控实验,让参与者分别使用逐步调试器和流调试器调试过滤操作,并测量调试表现,同时考察失败对象是否预先已知等因素。
评估
评估:采用统计检验分析调试表现,发现流调试器总体有显著正向效应,并与是否预先知道失败对象存在强交互。
原文摘要(Abstract)

Java's Stream API, that massively makes use of lambda expressions, permits a more declarative way of defining operations on collections in comparison to traditional loops. While experimental results suggest that the use of the Stream API has measurable benefits with respect to code readability (in comparison to loops), a remaining question is whether it has other implications. And one of such implications is, for example, tooling in general and debugging in particular because of the following: While the traditional loop-based approach applies filters one after another to single elements, the Stream API applies filters on whole collections. In the meantime there are dedicated debuggers for the Stream API, but it remains unclear whether such a debugger (on the Stream API) has a measurable benefit in comparison to the traditional stepwise debugger (on loops). The present papers introduces a controlled experiment on the debugging of filter operations using a stepwise debugger versus a stream debugger. The results indicate that under the experiment's settings the stream debugger has a significant ($\mathrm{p} < .001$) and large, positive effect $(\eta_{p}^{2}=.899;\ \frac{M_{stepwise}}{M_{stream}} \sim 204\%)$. However, the experiment reveals that additional factors interact with the debugger treatment such as whether or not the failing object is known upfront. The mentioned factor has a strong and large disordinal interaction effect with the debugger ($\mathrm{p} < .001; \eta_{p}^{2}=.928$): In case an object is known upfront that can be used to identify a failing filter, the stream debugger is even less efficient than the stepwise debugger $(\frac{M_{stepwise}}{M_{stream}}\sim 72\%)$. Hence, while we found overall a positive effect of the stream debugger, the answer whether or not debugging is easier on loops or streams cannot be answered without taking the other variables into account. Consequently, we see a contribution of the present paper not only in the comparison of different debuggers but in the identification of additional factors.

链接与引用

DOI 原文 · DBLP

BibTeX
@inproceedings{ReichlHG23,
  title = {Does the Stream API Benefit from Special Debugging Facilities? A Controlled Experiment on Loops and Streams with Specific Debuggers},
  author = {Jan Reichl and Stefan Hanenberg and Volker Gruhn},
  booktitle = {ICSE},
  year = {2023},
  doi = {10.1109/icse48619.2023.00058}
}