2014-11-21 20 views
5

我們正在使用HATEOAS有很大的影響。然而,我們一直在尋找性能和鏈接的建設,即代碼看起來像這樣HATEOAS Link和方法的性能

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

結果(我已經非常糟糕的結果我不關心大小,但下面的記錄無論如何)

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

大小是由於我們撲滅每個資源8個環節,所以我們預期的大小,而不是速度慢了下來。

大約232ms都花在構建鏈接每個對象大約2ms的我返回(在這個特殊的測試100名對象)

反正是有加快這?例如,我們可以在toResources調用中預先獲得所有請求的URI,然後在toResource中調用它?

+0

切換到不使用methodOn,而是提供一個Controller.class,Method,Params將成本降低到〜306ms – 2014-11-21 11:03:14

+0

您究竟在測量什麼? – zeroflagL 2014-11-21 20:46:50

+0

我認爲上面清楚是不是?創建指向控制器方法的鏈接的時間量? – 2014-11-24 08:25:35

回答

1

我看了一下linkTo(methodOn())左右的代碼,它看起來像很多AOP魔法。每次您爲目標接口調用methodOn時,都會生成代理。

我的感覺是,當你想要避免硬編碼的URI時,這對測試非常有用。 EntityLinks提供了一個應該更有效的替代方案。但它不如ControllerLinkBuilder那麼強大。

另一種方法是使用助手類與EntityLinks的組合。 spring-restbucks項目包含一個很好的例子 - PaymentLinks class

但說實話 - 很難與ControllerLinkBuiler提供的便利性競爭。

編輯:請參閱我的回答here以更詳細地比較鏈接構建器的性能。

+0

請參閱http://stackoverflow.com/a/36326559/5371736 – 2017-02-13 10:46:15