理想、完美的JIT是不是可以达到C的效率?

10 views
Skip to first unread message

est

unread,
Aug 31, 2008, 12:10:00 PM8/31/08
to TopLanguage
http://www.infoq.com/news/2008/08/tracemonkey

看了这篇文章,加上平时听说的PyPY之类的。有这个错觉:是不是JIT完美优化之后,理论上可以==C编译器的效率。不知道是不是这样?

还有Mozilla的TraceMonkey和Webkit家的SquirrelFish,倒地那个牛B一点?

菜鸟提问,大家请勿见笑,呵呵

lxcypp lxc

unread,
Aug 31, 2008, 12:58:15 PM8/31/08
to pon...@googlegroups.com
在现有的PC架构下永远不可能。
解释器的效率怎么可能和机器码比(况且这还不是最主要的因素)

2008/9/1 est <electr...@gmail.com>:

R.C

unread,
Aug 31, 2008, 1:08:41 PM8/31/08
to pon...@googlegroups.com
JIT之后就不是解释运行拉!
理论上来说,应该是可以超过C编译出的代码的。
应该JIT可以利用平台上的最大特性,而静态编译的话只是利用了一个比较小的子集

--------------------------------------------------
From: "lxcypp lxc" <lxc...@gmail.com>
Sent: Monday, September 01, 2008 12:58 AM
To: <pon...@googlegroups.com>
Subject: [TopLanguage] Re: 理想、完美的JIT是不是可以达到C的效率?

lxcypp lxc

unread,
Aug 31, 2008, 2:06:15 PM8/31/08
to pon...@googlegroups.com
虽然JIT可以做到不解释运行,但是动态语言和静态语言的差别就在于 动态性,很多东西是无法静态化下来的,从而一定还有需要解释的部分。。。

况且我也怀疑JIT的编译和优化效率

2008/9/1 R.C <col...@gmail.com>:

R.C

unread,
Aug 31, 2008, 2:58:48 PM8/31/08
to pon...@googlegroups.com
很多动态的内容对JIT来说是能推导出来的。
现在PC架构上,指令已经很便宜了,对性能影响最大的是流水线清空的penalty和缓存miss的penalty。用JIT的话,利用运行时的数据,能得到好得多的code path

--------------------------------------------------
From: "lxcypp lxc" <lxc...@gmail.com>

Sent: Monday, September 01, 2008 2:06 AM

up duan

unread,
Aug 31, 2008, 7:09:32 PM8/31/08
to pon...@googlegroups.com
不仅能达到,而且能超过。

2008/9/1 R.C <col...@gmail.com>

redsea

unread,
Aug 31, 2008, 9:32:31 PM8/31/08
to TopLanguage
看看 LLVM, 这是静态编译和JIT 组合的东西, 目前自身支持 C, 正在开发 C++, 第三方开发其他语言的支持.

用这个工具的话, 动静态语言对性能影响最大的, 会是语言的设计了 ---- 大家都可以静态+动态+ JIT ---- 只要有一小点动态的东西无
法静态, 或者静态化后产生大量的版本, 造成 working set 很大, 那么对性能的影响就会很大, 反之, 性能就会不错.

On Sep 1, 2:58 am, "R.C" <colp...@gmail.com> wrote:
> 很多动态的内容对JIT来说是能推导出来的。
> 现在PC架构上,指令已经很便宜了,对性能影响最大的是流水线清空的penalty和缓存miss的penalty。用JIT的话,利用运行时的数据,能得到好得多的code path
>
> --------------------------------------------------
> From: "lxcypp lxc" <lxc...@gmail.com>
> Sent: Monday, September 01, 2008 2:06 AM
> To: <pon...@googlegroups.com>
> Subject: [TopLanguage] Re: 理想、完美的JIT是不是可以达到C的效率?
>
> > 虽然JIT可以做到不解释运行,但是动态语言和静态语言的差别就在于 动态性,很多东西是无法静态化下来的,从而一定还有需要解释的部分。。。
>
> > 况且我也怀疑JIT的编译和优化效率
>
> > 2008/9/1 R.C <colp...@gmail.com>:
> >> JIT之后就不是解释运行拉!
> >> 理论上来说,应该是可以超过C编译出的代码的。
> >> 应该JIT可以利用平台上的最大特性,而静态编译的话只是利用了一个比较小的子集
>
> >> --------------------------------------------------
> >> From: "lxcypp lxc" <lxc...@gmail.com>
> >> Sent: Monday, September 01, 2008 12:58 AM
> >> To: <pon...@googlegroups.com>
> >> Subject: [TopLanguage] Re: 理想、完美的JIT是不是可以达到C的效率?
>
> >>> 在现有的PC架构下永远不可能。
> >>> 解释器的效率怎么可能和机器码比(况且这还不是最主要的因素)
>
> >>> 2008/9/1 est <electronix...@gmail.com>:

yq chen

unread,
Sep 1, 2008, 7:00:50 AM9/1/08
to pon...@googlegroups.com
等真的有超过的实现再说吧。

2008/9/1 redsea <red...@gmail.com>

Linker

unread,
Sep 1, 2008, 8:22:09 AM9/1/08
to pon...@googlegroups.com
JIT到GPGPU里面跑就可能了.

2008/9/1 yq chen <mephist...@gmail.com>



--
Linker M Lin
linker...@gmail.com

voodoo_cat

unread,
Sep 1, 2008, 10:30:36 AM9/1/08
to TopLanguage
理论上有可能,不过应该很难实现,到现在还没有见过。
Reply all
Reply to author
Forward
0 new messages