6

HATEOAS を使用して大きな効果を上げていますが、パフォーマンスを調べており、リンクの構築、つまり次のようなコードから非常に悪い結果が得られています。

resource.add(linkTo(methodOn(SomeController.class).findAll())).withSelfRel());

結果(サイズはあまり気にしませんが、とにかく以下に記録します)

Enabled links - ~438ms - 201 kb
Disable links - ~193ms - 84.6 kb

このサイズは、リソースごとに 8 つのリンクを配置したことによるもので、サイズは予想していましたが、速度が低下することはありませんでした。

リンクの構築に約 232 ミリ秒が費やされ、返されるオブジェクトごとに約 2 ミリ秒 (この特定のテストでは 100 オブジェクト)

これをスピードアップする方法はありますか?toResourcesたとえば、呼び出しのすべてのリクエストの URI を前もって取得してから、 toResource.

4

1 に答える 1

1

私は周りのコードを見てきましたがlinkTo(methodOn())、それは多くの AOP マジックのように見えます。ターゲット インターフェイスに対して methodOn を呼び出すたびに、プロキシが生成されます。

これは、URI のハードコーディングを避けたい場合のテストに最適だと思います。EntityLinksはるかに効率的な代替手段を提供します。しかし、それは ほど強力ではありませんControllerLinkBuilder

代わりに、Helper クラスを と組み合わせて使用​​することもできますEntityLinksspring-restbucksプロジェクトには、いい例が含まれています - PaymentLinksクラスです。

しかし、正直なところ、ControllerLinkBuiler が提供する利便性に匹敵するのは困難です。

編集:リンクビルダーのパフォーマンスのより詳細な比較については、こちらの回答を参照してください。

于 2015-10-24T18:55:16.997 に答える