ssm影城项目_影场与属性访问器界面
ssm影城項目
卡爾·迪亞(Carl Dea)最近跟蹤了我的一篇名為“ 保存內(nèi)存”的博客文章! 為屬性使用陰影字段 。 在他的博客中,他建議使用稱為“屬性訪問器”的接口來消除大量使用樣板代碼所需的樣板代碼。 卡爾還提到他尚未用大量數(shù)據(jù)測試他的方法,他或某些讀者可能會跟進性能比較。 所以它來了。
我編寫了一個小型測試應用程序,該應用程序?qū)崿F(xiàn)了卡爾在他的帖子中提到的三種策略:
該代碼可以在GitHub上找到 。 (運行它時,請確保將初始堆大小和最大堆大小設置為2048 MB -ms2048m -mx2048m,否則內(nèi)存分配會弄亂結(jié)果)。
該應用程序允許用戶在詢問或不詢問屬性的情況下執(zhí)行這些策略。 它測量花費的時間和使用的內(nèi)存。 應該注意的是,由于我使用System.currentTimeInMillis()和Runtime.gc() ,因此測量結(jié)果不科學。 當運行幾次時,我仍然會認為這些測試的質(zhì)量值是可以接受的。
下面的第一個屏幕截圖顯示了當您創(chuàng)建1,000至2,000,000個Carl用于其博客的Employee類實例時獲得的數(shù)量。 測試不會要求提供Employee可用的屬性(姓名,權(quán)力,主管,奴才):
如您所見,“影子字段”策略是最快的,并且使用的內(nèi)存量最少。 這是有道理的,因為“標準屬性”策略總是創(chuàng)建那些胖屬性對象,而“屬性訪問器接口”在內(nèi)部管理每個模型對象的哈希映射。 只有“影子域”策略才能使用最少的數(shù)據(jù)結(jié)構(gòu)。 對于選定的測試,它總共可以節(jié)省230 MB。 現(xiàn)在,如果您想象典型的應用程序具有許多模型類,并且其中許多類都比Employee測試類復雜得多,那么您可以想象可以節(jié)省多少內(nèi)存。
下一個屏幕截圖顯示了當還訪問Employee類中的所有四個屬性和可觀察對象時所進行的測量。
現(xiàn)在,“標準屬性”策略是最快的,也是使用最少內(nèi)存的策略。 再次講得通,因為該策略現(xiàn)在針對給定的用例實現(xiàn)了完美的方法。 但是,“影子域”策略排在第二位。
結(jié)論
“屬性訪問器接口”策略成功地減少了陰影場所需的所有樣板代碼所產(chǎn)生的噪聲,但我認為這樣做的代價太高了,無法為創(chuàng)建多個模型對象的任何應用程序付錢。
PS:應該注意的是,當JVM的初始堆大小保留為其默認設置時,該比較甚至更支持“影子字段”策略。 在這種情況下,測試應用程序必須不斷要求更多的堆空間,這是一項相當昂貴的操作。
翻譯自: https://www.javacodegeeks.com/2016/04/shadow-fields-vs-property-accessor-interface.html
ssm影城項目
總結(jié)
以上是生活随笔為你收集整理的ssm影城项目_影场与属性访问器界面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea添加jboss_如何将云持久存储
- 下一篇: 方法参数泛型_无参数泛型方法反模式