原文 http://www.3geye.net/?3/viewspace-3187
昨天,因?yàn)楣ぷ餍枰肓私庀履_步引擎的實(shí)現(xiàn)原理,下載了一個(gè)開(kāi)源的腳本引擎,研究了下,
如果大家需要下載的,請(qǐng)到我空間Google下,就可以發(fā)現(xiàn)這個(gè)腳本引擎的具體地址。
下面我來(lái)說(shuō)下這個(gè)腳本引擎的一些性能問(wèn)題。
首先來(lái)看看他是怎么讀取腳本文件的。
代碼
InputStream is = new Object().getClass().getResourceAsStream(path); //j2me使用
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int ch = 0;
while ( (ch = is.read()) != -1) {
baos.write(ch);
}
上面是作者讀取腳本文件代碼,本人覺(jué)得這個(gè)代碼的效率很低,一個(gè)個(gè)字符讀取出來(lái),速度很慢,我測(cè)試了下發(fā)現(xiàn)讀取一個(gè)很簡(jiǎn)單的文件需要47毫秒,在Dell 1420的機(jī)器上。這樣的效率是很可怕的。
下面看看我是怎么提高他的性能的。
byte[] buff = new byte[512];
long total = 0;
int count = 0;
while ((count = is.read(buff)) > 0) {
baos.write(buff, 0, count);
total += count;
}
我是采用了一個(gè)512字節(jié)的緩沖區(qū)去讀取這些數(shù)據(jù),經(jīng)過(guò)測(cè)試發(fā)現(xiàn)Dell 1420機(jī)器上的花費(fèi)是0毫秒。
快了非常多。
不過(guò)腳本引擎除了讀取源文件外,最重要的核心是解釋引擎的速度。
有時(shí)間繼續(xù)研究下。
昨天,因?yàn)楣ぷ餍枰肓私庀履_步引擎的實(shí)現(xiàn)原理,下載了一個(gè)開(kāi)源的腳本引擎,研究了下,
如果大家需要下載的,請(qǐng)到我空間Google下,就可以發(fā)現(xiàn)這個(gè)腳本引擎的具體地址。
下面我來(lái)說(shuō)下這個(gè)腳本引擎的一些性能問(wèn)題。
首先來(lái)看看他是怎么讀取腳本文件的。
代碼
InputStream is = new Object().getClass().getResourceAsStream(path); //j2me使用
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int ch = 0;
while ( (ch = is.read()) != -1) {
baos.write(ch);
}
上面是作者讀取腳本文件代碼,本人覺(jué)得這個(gè)代碼的效率很低,一個(gè)個(gè)字符讀取出來(lái),速度很慢,我測(cè)試了下發(fā)現(xiàn)讀取一個(gè)很簡(jiǎn)單的文件需要47毫秒,在Dell 1420的機(jī)器上。這樣的效率是很可怕的。
下面看看我是怎么提高他的性能的。
byte[] buff = new byte[512];
long total = 0;
int count = 0;
while ((count = is.read(buff)) > 0) {
baos.write(buff, 0, count);
total += count;
}
我是采用了一個(gè)512字節(jié)的緩沖區(qū)去讀取這些數(shù)據(jù),經(jīng)過(guò)測(cè)試發(fā)現(xiàn)Dell 1420機(jī)器上的花費(fèi)是0毫秒。
快了非常多。
不過(guò)腳本引擎除了讀取源文件外,最重要的核心是解釋引擎的速度。
有時(shí)間繼續(xù)研究下。