成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

比較Swing和SWT的速度

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

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

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

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

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

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

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

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

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

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

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

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

【編輯推薦】

  1. Swing控件可以實現水平翻轉
  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的區

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

事件監聽器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-06-05 09:24:53

struts標簽jsp

2009-07-10 14:58:13

JLabel組件JFC和Swing

2009-07-14 12:58:49

AWT和Swing
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产91成人| 婷婷在线免费 | 在线视频 亚洲 | 黄色片av| 午夜免费影视 | 欧美一区二区三区精品 | www.狠狠干 | 欧美日韩综合视频 | 一区二区三区亚洲 | 国产三级一区二区三区 | 亚洲精品自拍视频 | 成人黄页在线观看 | 国产在线精品一区二区 | 日韩成人 | 波多野结衣二区 | 九九热在线视频观看这里只有精品 | 久久国产精品视频 | 久草福利| 一区二区视屏 | 亚洲精品www久久久久久广东 | 欧美一区二区三区 | 成年免费视频 | 午夜视频一区 | 精品一区二区三区不卡 | 精品久久久久久久 | 日韩欧美在线免费观看 | 在线日韩 | 久久亚洲精品国产精品紫薇 | 久久99成人 | 激情五月综合网 | 日韩一区精品 | 欧美激情精品久久久久久免费 | 国产男女视频网站 | 日韩精品成人在线 | 黄色一级免费看 | 国产福利在线视频 | 在线播放中文字幕 | 日本午夜一区二区三区 | 日本三级在线网站 | 久久久久久综合 | av激情在线|