楠本研究室

業績一覧

ホーム業績一覧

JavaのStream APIに対する並び替えリファクタリングの提案

JavaのStream APIに対する並び替えリファクタリングの提案
電子情報通信学会技術研究報告, vol.119, no.362, pp.79-84 (2020)
概要: JavaのStreamは複数要素に対する処理を実装する記法である.このような複数要素の操作は,プログラム全体の実行時間の大半を占め,さらに頻繁に行われる処理である.そのためStreamにおける処理の流れ,つまりAPIの呼び出し順序はプログラムの性能に影響を与える要因となる.そこで本研究では,プログラム実行速度の向上を目的とした,Stream APIの呼び出し順を並び替えるリファクタリング手法を提案する.提案手法では,Stream APIの性質と依存関係という2つの観点から各APIの組み合わせにおける入れ替え可能性を,APIの性質とステートフルなAPIかどうかの2点から実行速度面で適切なAPIの呼び出し順を体系化する.提案手法の有用性を評価する実験として,実際のプロジェクトにおいて誤用,つまり性能が低下する呼び出し順の事例がどの程度存在するかを調査した.結果として,可換なStream APIの組み合わせを使用している事例のうち,約20%の事例において誤用が存在した.また,本手法を実際のプロジェクトにおける8件の誤用事例に適用し,APIの並び替えによる性能変化を調査することで提案手法の有効性を評価した.実験結果として,いずれの事例においても実行速度の向上が見られ,最大で126msの実行時間が短縮された.
@inproceedings{田中紘都2020,
  author = {田中 紘都 and 柗本 真佑 and 楠本 真二},
  title = {JavaのStream APIに対する並び替えリファクタリングの提案},
  booktitle = {電子情報通信学会技術研究報告},
  volume = {119},
  number = {362},
  pages = {79--84},
  year = {2020},
  month = {jan}
}