• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

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

    優化你的PowerBuilder程序

    發布: 2008-10-14 12:00 | 作者: 不詳 | 來源: programfan.com  | 查看: 93次 | 進入軟件測試論壇討論

    領測軟件測試網

    第三種方法:

      dw_1.modify("da_dh.x=18" +&
      "da_dh.y=16" +&
      "da_dh.height=100" +&
      "da_dh.width=200")

      實驗證明, 第三種方法的速度是最快的. 但是程序的可讀性最差.注意, 在方法一和方法二中, 都使用的 setredraw() 函數以減少屏幕的重繪, 否則, 執行速度將嚴重下降.

      6. 數據窗口中數據的訪問

      在程序中, 經常會需要動態的修改數據窗口中的數據. 對此, PB 提供了多種方法, 各種方法在性能上會有一些差異.

      A. 數據窗口中數據的訪問

      目的: 將數據窗口中的電話號碼存放在一個數組中.請比較下面兩中方法.

      方法一:
      string da_dh[]
      long ll,i
      ll = dw_1.rowcount()
      for i = ll to 1 stet -1
      da_dh[i] = dw_1.getitemstring(i,"dhhm")
      next

      方法二:
      string da_dh[]
      da_dh[] = dw_1.object.dhhm.current

      測試發現, 第二種方法比第一種方法快將近一倍. 數據量越大這種差異越明顯.

      B. 數據窗口中數據的修改

      目的: 修改數據窗口中的電話號碼列的值.

      請比較下面兩中方法.

      方法一:
      dw_1.setitem(i,"dhhm",l_name)

      方法二:
      dw_1.object.name[i] = l_name

      測試發現, 第二種方法比第一種方法快將近一倍. 數據量越大這種差異越明顯.

      7. 數據窗口事件對性能的影響

      對于數據窗口控制中經常發生的事件, 應當盡量減少其中的程序代碼. 特別是如下事件:
      a. itemchanged
      b. editchanged
      c. itemfocuschanged
      d. pbm_dwnkey
      e. rowfocuschanged
      f. retrieverow

      在這些事件中的任何處理程序, 都會降低應用程序的處理速度. 所以應當盡量減少這些事件中的處理程序, 必要時, 可以考慮只將重要的代碼放在這些事件中, 而將剩余的代碼放在一個傳遞的事件中.

      例如,如果需要用到數據窗口的 ROWFOCUSCHANGED 事件,可以為數據窗口定義一用戶事件 "UE_RE",而在數據窗口的 ROWFOCUSCHANGED 事件中寫如下代碼:
      PARENT.postevent("ue_re")

      在 UE_RE 事件中再編寫相應的程序代碼,如:
      string code
      dw_1.selectrow(0,false)
      dw_1.selectrow(rownum,true)
      code = getitemstring(dw_1,rownum,"dhhm")
      dw_2.retrieve(code)

      另外, 為了獲得當前行號,應盡量使用數據窗口的 CURRENTROW 變量,而少用 GETROW() 函數。

      8. 數據窗口的列名稱與列編號

      對數據窗口的某列進行訪問, 可以采用該列的名稱, 也可以使用該列的編號。

      例如:
      采用列編號:
      dw_1.object.data[ll_row,2]
      dw_1.getitemstring(3,2)

      采用列名稱表示某列:
      dw_1.object.article_text[ll_row]
      dw_1.getitemstring(3,"dhhm")
      dw_1.setitem(3,"date",1999-03-31)
      ...
     
      對于以上兩種方法,如果只進行一次查詢,在速度上并沒有太大的區別,如果需要循環訪問數據窗口上的某一列,則速度上的差異就表現的比較明顯,采用第一種方法要快, 但是程序的可讀性比較差。但是,在使用函數時(如 GETITEM() 和 setitem() ), 執行速度往往沒有很大差別。

      9. 計算域

      數據窗口的計算域會對數據的操作性能產生影響。 如果數據窗口中包含許多復雜的計算域,將嚴重影響數據窗口的執行速度。

    延伸閱讀

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

    33/3<123

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

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

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>