2

Eclipse の Xtext フレームワークを使用して DSL を開発しています。

コンテンツ アシスト/コード補完のために、文字列のリストを生成する高価なプロセスがあります。

そのプロセスの結果をキャッシュするにはどうすればよいですか?

長い話: Groovy スクリプトとの私の DSL インターフェイス。スクリプトは、DSL の特定の場所で提供するメソッドを提供します。これは、正規表現を使用してスクリプトのメソッドを解析する場合でも、かなり遅いです。そこで、スクリプト解析の結果をキャッシュしたいと思います。

私の分析によると、分析コードは検証中 (常にエディターを持っているとは限りません)、およびユーザーが DSL ファイルを開くときに呼び出されます。

検証がいつ終了したかを知る方法はありません (コードはプライベート メソッドにあり、Xtext 開発者はそれを変更することを拒否しています)。しかし、これは Eclipse 用のエディター/コンパイラーを作成する際の一般的な問題であるに違いないと考えています。他の人はこの問題をどのように解決しますか? Eclipse フレームワークにキャッシング サービスはありますか?

4

2 に答える 2

1

Xtext が提供する JVM モデルを利用できます。groovy プラグインがインストールされている限り、その型とメソッドはそれを通じて利用できるはずです。

キャッシング:

リソースには、変更があった場合に自動的に削除されるキャッシュがあります。

((XtextResource)x.eResource()).getCache().get(myKey, x.eResource(), 
    new Provider<List<String>>(){
        public List<String> get() {
            return computeGroovyMethodNames();
        }
    })

キャッシュを注入することもできます:

@Inject
private IResourceScopeCache cache
于 2011-12-08T08:17:12.950 に答える
0

よくわかりませんが、org.eclipse.xtext.util.SimpleCacheそのような場合に再利用できると思います。

于 2011-11-29T12:35:08.640 に答える