• 軟件測試技術
  • 軟件測試博客
  • 軟件測試視頻
  • 開源軟件測試技術
  • 軟件測試論壇
  • 軟件測試沙龍
  • 軟件測試資料下載
  • 軟件測試雜志
  • 軟件測試人才招聘
    暫時沒有公告

字號: | 推薦給好友 上一篇 | 下一篇

Java列表對象的性能分析和測試

發布: 2011-1-19 09:37 | 作者: 不詳 | 來源: 領測測試網采編 | 查看: 30次 | 進入軟件測試論壇討論

領測軟件測試網

  Vector類和ArrayList類的主要不同之處在于同步。除了兩個只用于串行化的方法,沒有一個ArrayList的方法具有同步執行的能力;相反,Vector的大多數方法具有同步能力,或直接或間接。因此,Vector是線程安全的,但ArrayList不是。這使得ArrayList要比Vector快速。對于一些最新的JVM,兩個類在速度上的差異可以忽略不計:嚴格地說,對于這些JVM,這兩個類在速度上的差異小于比較這些類性能測試所顯示的時間差異。

  通過索引訪問和更新元素時,Vector和ArrayList的實現有著卓越的性能,因為不存在除范圍檢查之外的其他開銷。除非內部數組空間耗盡必須進行擴展,否則,向列表的末尾添加元素或者從列表的末尾刪除元素時,都同樣有著優秀的性能。插入元素和刪除元素總是要進行數組復制(當數組先必須進行擴展時,需要兩次復制)。被復制元素的數量和[size-index]成比例,即和插入/刪除點到集合中最后索引位置之間的距離成比例。對于插入操作,把元素插入到集合最前面(索引0)時性能最差,插入到集合最后面時(最后一個現有元素之后)時性能最好。隨著集合規模的增大,數組復制的開銷也迅速增加,因為每次插入操作必須復制的元素數量增加了。

  二、LinkedList的實現

  LinkedList通過一個雙向鏈接的節點列表實現。要通過索引訪問元素,你必須查找所有節點,直至找到目標節點: public Object get(intindex) {

  // 首先檢查index是否合法...此處不顯示這部分代碼

  Entry e = header; // 開始節點

  // 向前或者向后查找,具體由哪一個方向距離較

  // 近決定

  if (index < size/2) {

  for (int i = 0; i <= index; i++)

  e = e.next;

  } else {

  for (int i = size; i > index; i--)

  e = e.previous;

  }

  return e;

  }

  把元素插入列表很簡單:找到指定索引的節點,然后緊靠該節點之前插入一個新節點: public void add(int index, Object element) {

  // 首先檢查index是否合法...此處不顯示這部分代碼

文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/

52/5<12345>

關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97