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