自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Jacl與Jython性能測(cè)評(píng)總結(jié)

開(kāi)發(fā) 后端
本文通過(guò)一系列測(cè)試比較了Jacl和Jython性能,得出結(jié)論,Jython性能比較強(qiáng)大,是速度最快的一種。

一、Jacl 與Jython歷史與由來(lái)

在一些Java應(yīng)用的需求中,集成某種腳本語(yǔ)言的支持能夠帶來(lái)很大的方便。例如,用戶(hù)可能想要編寫(xiě)腳本程序驅(qū)動(dòng)應(yīng)用、擴(kuò)展應(yīng)用,或?yàn)榱撕?jiǎn)化操作而編寫(xiě)循環(huán)和其他流程控制邏輯。在這些情況下,一種理想的解決方案是在Java應(yīng)用中提供對(duì)腳本語(yǔ)言解釋器的支持,讓腳本語(yǔ)言解釋器讀取用戶(hù)編寫(xiě)的腳本并在應(yīng)用提供的類(lèi)上運(yùn)行這些腳本。為了實(shí)現(xiàn)這個(gè)目標(biāo),你可以在Java應(yīng)用所運(yùn)行的JVM中,運(yùn)行一個(gè)基于Java的腳本語(yǔ)言解釋器。Jacl與Jython便是Java腳本語(yǔ)言。Jacl為T(mén)cl的Java實(shí)現(xiàn),Jython為Python的Java實(shí)現(xiàn)。 (其他的腳本語(yǔ)言:Rhino:JavaScript的Java實(shí)現(xiàn)。 BeanShell:一個(gè)用Java編寫(xiě)的Java源代碼解釋器。)

二、Jacl與Jython性能比較

1)Jacl與Jython性能之可用性比較:

Jacl:如果你想要在Tk腳本代碼中創(chuàng)建用戶(hù)界面元素,請(qǐng)?jiān)L問(wèn)Swank project,它把Java的Swing部件封裝到了Tk里面。發(fā)行版不包含Jacl腳本的調(diào)試器。

Jython:支持用Python語(yǔ)法編寫(xiě)的腳本。Python利用縮進(jìn)層次表示代碼塊的結(jié)構(gòu),而不是象其他許多語(yǔ)言一樣用花括號(hào)或開(kāi)始-結(jié)束符號(hào)表示控制流程。

2)Jacl與Jython性能之運(yùn)行測(cè)試:

為一致起見(jiàn),測(cè)試程序的每一種腳本語(yǔ)言的版本都盡量地相似。測(cè)試在一臺(tái)Toshiba Tecra 8100筆記本上進(jìn)行,CPU是700-MHz的Pentium III處理器,RAM是256 MB。調(diào)用JVM時(shí),堆棧大小使用默認(rèn)值。

表格一:從1到1000000計(jì)數(shù)的for循環(huán):

解釋器類(lèi)型 時(shí)間
Jacl  140 秒
Jython 1.2 秒

表格二:比較整數(shù)是否相等,1000000次:

解釋器類(lèi)型 時(shí)間
Jacl  300 秒
Jython 4 秒

表格三:分配并初始化100000個(gè)元素的數(shù)組:

解釋器類(lèi)型 時(shí)間
Jacl  25 秒
Jython 1 秒

表格四:分配并初始化500 X 500 個(gè)元素的數(shù)組:

解釋器類(lèi)型 時(shí)間
Jacl  45 秒
Jython 1秒

表格五:在JVM內(nèi)初始化解釋器所需要的內(nèi)存:

解釋器類(lèi)型 時(shí)間
Jacl  大約1M
Jython 大約4M

本項(xiàng)評(píng)測(cè)證明Jython性能最好,Jacl性能可能是令人難以接受的。如果腳本程序重復(fù)執(zhí)行代碼的機(jī)會(huì)很少,那么這些解釋器在速度上的相對(duì)差異就不那么重要了。值得指出的是,Jython看來(lái)沒(méi)有為聲明二維數(shù)組提供內(nèi)建的直接支持,但這個(gè)問(wèn)題可以通過(guò)一個(gè)“數(shù)組的數(shù)組”結(jié)構(gòu)解決。

3)Jacl與Jython性能之集成的難易程度(測(cè)試)

本項(xiàng)評(píng)測(cè)包含兩個(gè)任務(wù)。第一個(gè)任務(wù)是比較對(duì)各種腳本語(yǔ)言解釋器進(jìn)行實(shí)例化時(shí)需要多少代碼;第二個(gè)任務(wù)是編寫(xiě)一個(gè)完成如下操作的腳本:實(shí)例化一個(gè)Java JFrame,放入一個(gè)JTree,調(diào)整大小并顯示出JFrame。盡管這些任務(wù)都很簡(jiǎn)單,但由此我們可以看出開(kāi)始使用一個(gè)解釋器要做多少工作,還可以看出為解釋器編寫(xiě)的腳本代碼在調(diào)用Java類(lèi)時(shí)到底是什么樣子。

Jacl性能測(cè)試

要把Jacl集成到Java應(yīng)用,首先要把Jacl的Jar文件加入到Java的CLASSPATH,然后在執(zhí)行腳本之前,創(chuàng)建Jacl解釋器的實(shí)例。下面是創(chuàng)建Jacl解釋器實(shí)例的代碼:

Jacl代碼清單:

  1. import tcl.lang.*;     
  2. public class SimpleEmbedded {     
  3.    public static void main(String args[]) {     
  4.       try {     
  5.             Interp interp = new Interp();     
  6.    } catch (Exception e) {     
  7. }     
  8. }  
下面的Jacl腳本代碼顯示了如何創(chuàng)建一個(gè)JTree,把它放入JFrame,調(diào)整大小并顯示JFrame:

Jacl代碼清單 

  1. package require java     
  2. set env(TCL_CLASSPATH)      
  3. set mid [java::new javax.swing.JTree]     
  4. set f [java::new javax.swing.JFrame]     
  5. $f setSize 200 200    
  6. set layout [java::new java.awt.BorderLayout]     
  7. $f setLayout $layout     
  8. $f add $mid      
  9. $f show   

Jython性能測(cè)試

要把Jython集成到Java應(yīng)用,首先要把Jython的Jar文件加入到Java的CLASSPATH,然后在執(zhí)行腳本之前,創(chuàng)建一個(gè)Jython解釋器的實(shí)例。完成這個(gè)任務(wù)的Jython代碼很簡(jiǎn)單:

Jython代碼清單: 

  1. import org.python.util.PythonInterpreter;     
  2. import org.python.core.*;     
  3. public class SimpleEmbedded {     
  4.     public static void main(String []args) throws PyException {     
  5.         PythonInterpreter interp = new PythonInterpreter();     
  6.   }     
  7. }   
下面的Jython腳本代碼顯示了如何創(chuàng)建JTree,把它放入JFrame,然后顯示出JFrame。下面的代碼不包含調(diào)整大小的操作:

Jython代碼清單 

  1. from pawt import swing     
  2. import java, sys     
  3. frame = swing.JFrame('Jython example', visible=1)     
  4. tree = swing.JTree()     
  5. frame.contentPane.add(tree)     
  6. frame.pack()   

從上面的說(shuō)明可以看出,在Java應(yīng)用中集成任何一種解釋器都是很容易的。同時(shí),只要你掌握了腳本語(yǔ)言的語(yǔ)法,就能夠高效地編寫(xiě)出腳本程序。

Jacl與jython性能測(cè)評(píng)總結(jié):

與其他解釋器相比,Jacl的發(fā)展速度看起來(lái)特別慢,但如果你必須使用Tcl腳本,使用Jacl解釋器仍舊是值得的。Jython性能比較強(qiáng)大,是速度最快的一種。唯一真正令人擔(dān)心的是Jyphon的流程控制語(yǔ)法,不過(guò),你可能會(huì)在乎這些語(yǔ)法上的差異,也可能不會(huì)在乎。就象Jacl一樣,由于需要學(xué)習(xí)的新知識(shí)比較多,用Jython編寫(xiě)腳本可能需要比JavaScript和BeanShell更長(zhǎng)的學(xué)習(xí)時(shí)間。如果你想要用Python編寫(xiě)比較復(fù)雜的腳本,就應(yīng)該買(mǎi)一本書(shū)。Python是一種廣受歡迎的編程語(yǔ)言,因此可供選擇的書(shū)籍也相當(dāng)多。

【編輯推薦】

  1. Jython 2.5版本發(fā)布?xì)v程
  2. Jython 2.2的新增特性及發(fā)布背景介紹
  3. Python和Jython的區(qū)別簡(jiǎn)述
  4. Jython的安裝步驟(Jython2.1)
  5. JPython訪(fǎng)談錄:從JPython到Jython
責(zé)任編輯:佚名 來(lái)源: Jython中文網(wǎng)
相關(guān)推薦

2009-07-14 17:58:55

Jython性能

2009-10-09 15:18:05

Jython

2009-07-14 18:45:26

Jython開(kāi)發(fā)特性

2020-04-09 15:35:43

前端開(kāi)發(fā)框架

2009-07-10 17:33:39

jython語(yǔ)言什么是JythonJython

2009-07-16 13:09:46

Jython安裝

2010-09-14 13:58:40

2009-07-14 15:20:25

Jython腳本Jython解釋器

2009-07-15 18:03:40

Jython功能

2009-07-10 18:10:18

Jython編寫(xiě)SerJython

2009-12-14 15:04:32

Ruby性能特點(diǎn)

2009-07-15 17:38:58

Jython全局函數(shù)

2009-07-14 17:50:00

Jython特殊屬性

2021-08-27 14:26:06

開(kāi)發(fā)技能React

2024-09-30 11:45:10

2009-07-10 17:40:58

Jython訪(fǎng)問(wèn)MyS

2018-08-13 09:57:15

LinuxFio硬盤(pán)性能

2022-05-23 13:44:53

前端開(kāi)發(fā)優(yōu)化

2009-07-15 17:43:20

Jython類(lèi)

2009-07-14 15:27:17

Jython腳本示例
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)