Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Full workspace save does unnecessary work on large workspaces

オープン
#2,887 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
java

調査の方向性

SaveManager.save(FULL_SAVE, ...) から始め、次に visitAndSave、visitAndSnap、resetSnapshots、removeUnusedTreeFiles、saveMetaInfo を調べます。完全保存の動作をスナップショットの追跡およびプロジェクト単位の並列処理と比較します。シャットダウン時の動作を測定する際は、IDEWorkbenchAdvisor.disconnectFromWorkspace() と SafeFileOutputStream も確認します。変更されていないリソースが冗長な書き込みを回避し、不要なクロック読み取りが削減され、逐次的な走査に対処し、ISaveParticipant のタイミングが確認できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

performance plan

During tracing the startup time of Eclipse I noticed that shutdown is also slow.
On a workspace with 756 projects and ~3300 markers the "Saving Workspace" dialog shown by
IDEWorkbenchAdvisor.disconnectFromWorkspace() stays up for several seconds on shutdown.

Happens in SaveManager.save(FULL_SAVE, ...), and parts of it are done regardless of
what actually changed:

  • SafeFileOutputStream commits by copying the temporary file over the target, so the workspace
    tree, .markers and .syncinfo are written twice.
  • visitAndSave rewrites .markers and .syncinfo for every project, even when neither changed
    since the last full save. The snapshot path already tracks this per resource, the full save does not.
  • visitAndSave and visitAndSnap read the clock four times per visited resource even when no
    save trace option is enabled.
  • resetSnapshots, removeUnusedTreeFiles and saveMetaInfo walk all projects sequentially doing
    file system stats, while visitAndSave next to them already runs per project in parallel.
  • A slow ISaveParticipant is invisible without enabling -debug, so third party contributions
    cannot be told apart from platform work.

I plan to work on these.

主要言語
Java
スター
165
フォーク
174
平均マージ
3日 2時間
マージ済み PR(30日)
43

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

eclipse-platform/eclipse.platform のほかの issue

eclipse-platform/eclipse.platform の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。