偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

比較Swing和SWT的速度

開發(fā) 后端
本文介紹在Windows上比較Swing和SWT的速度幾乎一樣快之外,在其他操作系統(tǒng)上Swing的速度都要快于SWT。

前面文章已經(jīng)說過,MiG Layout Site網(wǎng)站的Mikael Grev曾編寫了一個GUI benchmark,來測試和比較Swing和SWT的性能,最終結論是除在Windows上比較Swing和SWT的速度幾乎一樣快之外,在其他操作系統(tǒng)上Swing的速度都要快于SWT。

這好像違背人們的常識,模擬的組件如何能快過本地組件?實際如果你按照下面的想法想,這個現(xiàn)象也就不難解釋:

1.本地組件實際上也是畫出來,只不過是操作系統(tǒng)畫罷了。這個通常是人們所忽略的,仿佛只有Swing是畫出來的,而本地組件就是屏幕上的附屬物似的,忘記了它們也是畫出來的。

2.現(xiàn)在Java平臺的運行速度已經(jīng)不慢于C/C++等靜態(tài)編譯型語言的產(chǎn)生的代碼。人們往往提到本地仿佛就比Java實現(xiàn)要快。在過去也許可以這樣看,但是現(xiàn)在隨著Java 6平臺性能的提高,許多地方Java平臺的速度反而快過本地調(diào)用。因此是應該讓人們從過去對于Java速度的印象中醒過來時候了,現(xiàn)在人們提到Java速度想到的應該是和C/C++相提并論了。

3.JNI調(diào)用耗費的時間是不能忽略的。JNI調(diào)用速度要比普通Java方法調(diào)用慢好幾倍甚至幾十倍。即便是在Java 6中,這種情況并沒有改善。問題的實質(zhì)在于Java運行時系統(tǒng)和本地庫之間畢竟是兩個異質(zhì)系統(tǒng),它們之間的調(diào)用必然有大量的轉(zhuǎn)換開銷。Java普通方法調(diào)用和JNI調(diào)用之間的關系就好像是本地調(diào)用和遠程過程調(diào)用之間的區(qū)別,遠程過程調(diào)用有網(wǎng)絡數(shù)據(jù)通信和數(shù)據(jù)類型系統(tǒng)轉(zhuǎn)換的開銷,而JNI也有數(shù)據(jù)傳遞(主要是內(nèi)存拷貝,速度雖然快過網(wǎng)絡通信,但是相對直接調(diào)用是不能忽略的)和數(shù)據(jù)類型系統(tǒng)轉(zhuǎn)換(Java數(shù)據(jù)類型和C語言數(shù)據(jù)類型)的開銷。

4.Swing絕大部分是用Java平臺模擬出的組件,這個過程都在一個系統(tǒng)平臺內(nèi)完成。而SWT是部分在本地系統(tǒng)完成,部分在Java平臺完成,要在這兩個平臺之間需要進行頻繁的數(shù)據(jù)交互。

5.Swing可以享受JVM的特殊待遇,進行特殊優(yōu)化,比如inline,JIT代碼,Swing事件隊列對于事件的預處理(合并Paint事件,批處理Java 2D光柵指令等),這就像本地組件可以利用操作系統(tǒng)進行優(yōu)化一樣。

因此如果排除人的因素,也就是說排除Java平臺的工程師、Windows的工程師、Linux的工程師和Solaris的工程師本身能力的區(qū)別,從理論上來說,Swing的速度是完全可以超過SWT的。理解這一點你只要記住最關鍵的兩個原因是:

1).Java平臺的速度可以和C/C++一樣快。這個已經(jīng)被很多benchmark證明了,它們的速度是相當?shù)?。因此Java模擬組件不一定會慢過本地組件,這要看誰的實現(xiàn)算法好。

2).跨系統(tǒng)之間的調(diào)用(JNI調(diào)用)開銷是不能忽略的。這個也在很多論文和benchmark得到證明。Swing中組件和數(shù)據(jù)之間的更新速度要遠快于SWT,其原因就是Swing不需要進行數(shù)據(jù)傳輸,而SWT需要跨兩個系統(tǒng)進行數(shù)據(jù)傳輸。這在大數(shù)據(jù)量編輯組件如Table中尤其明顯。原因就在于Swing直接顯示了數(shù)據(jù)模型,而SWT需要將這些數(shù)據(jù)使用JNI發(fā)送到本地組件中去。

不可否認,Microsoft在Windows上浸淫了這么多年,圖形用戶界面的優(yōu)化已經(jīng)非常完善,而反觀Linux和Unix系列的桌面系統(tǒng)卻沒有如此優(yōu)化過。這就是為什么前文的benchmark顯示SWT能在Windows上和Swing速度相持平,而在其他平臺上遠慢于Swing的原因。因為SWT使用本地組件,它既占了Windows的光,也因此吃了Linux和Unix的虧。以上是比較wing和SWT的速度。

【編輯推薦】

  1. Swing控件可以實現(xiàn)水平翻轉(zhuǎn)
  2. 淺析Swing體系結構
  3. 介紹Swing菜單和菜單項
  4. 淺談學習Swing組件
  5. Swing模型和渲染器
責任編輯:佚名 來源: anqn.com
相關推薦

2009-07-10 11:07:18

Swing和SWT

2009-07-14 16:30:41

Swing與SWT

2009-07-17 09:36:14

SWT和Swing的區(qū)

2009-07-14 16:02:04

SWT和Swing

2009-07-16 13:37:33

Swing和AWT

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-15 10:23:51

Swing SWT集成

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-15 16:39:51

AWT和Swing

2009-07-17 09:55:02

事件監(jiān)聽器SWT和SwingAWT

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2009-07-15 15:35:59

Swing程序Swing性能

2009-07-17 09:07:20

2009-07-14 15:01:02

AWT和Swing

2009-07-17 10:11:55

AWT和Swing

2012-03-26 12:23:25

JavaSwing

2009-07-10 14:58:13

JLabel組件JFC和Swing

2009-06-05 09:24:53

struts標簽jsp

2009-07-14 12:58:49

AWT和Swing
點贊
收藏

51CTO技術棧公眾號