lua jit java jit_Lua JIT 2.0 发布了,一百五十倍的性能提升!

jzhang

2014-4-7 15:44:00

阅读(2432)

评论(2)

先把官方主页摆出来:

外链网址已屏蔽luajit.org/luajit.html

Lua JIT 1.0早就有了,但是性能一般,这次的2.0是重新编写的,优化效果有了质的飞跃。

下面这个表是作者的测试结果,其中Lua实现的MD5算法,经过JIT优化后,性能提升了152.7倍!

md5 152.7 | mandelbrot 13.4 | nsieve 4.7 |

array3d 101.5 | pidigits 12.4 | partialsums 4.1 |

array 73.5 | random 12.2 | chameneos 3.8 |

methcall 28.8 | nsievebits 12.0 | recursive 3.5 |

nsievebits 28.0 | nestedloop 11.9 | knucleotide 3.4 |

matrix 23.0 | lists 9.3 | binarytrees 2.7 |

spectralnorm 21.4 | cheapconcr 5.5 | meteor 2.0 |

fannkuch 20.9 | cheapconcw 5.4 | revcomp 1.8 |

nbody 14.8 | fasta 5.3 | sumfile 1.5 |

可见对纯计算的代码,JIT 2.0的优化效果最好,而涉及到文件的则不太明显。

JIT 2.0这么高的性能提升,会反过来让人质疑Lua本身的性能是不是太差了,下面这个表正好。

SciMark composite |

small score | FFT SOR MC SPARSE LU

----------------------------+---------------------------------------

GCC 4.3.2 906.1 | 739.1 909.0 190.4 1057.0 1635.1

JVM 1.6 Server 876.3 | 573.8 1185.5 297.7 579.2 1745.4

JVM 1.6 Client 579.6 | 424.8 895.8 122.8 595.5 859.0

----------------------------+---------------------------------------

LuaJIT 2.0.0-beta1 580.4 | 427.4 1025.0 223.7 303.4 922.5

LuaJIT 1.1.5 96.7 | 72.0 166.1 37.1 91.8 116.5

Lua 5.1.4 16.5 | 11.0 27.4 7.6 16.9 19.5

可以看到对傅立叶变化,Lua的性能是C的 1.5%,经过JIT 2.0优化后则是 58%。

所以Lua的确不快。

有消息说网易的网络游戏因为使用Lua,其单服务器负荷能力大大低于使用其他语言如LPC的游戏。

这只是传言,未经证实。从下面这个网站看,Lua又似乎是所有脚本语言中最快的。

外链网址已屏蔽shootout.alioth.debian.org/u32/benchmark.php

BenchMark这事,似乎不是太靠谱。

(SciMark是最初Java定义的测试语言在计算密集代码中性能如何的标准)

评论列表

路人2014-4-7 15:44:00

re: Lua JIT 2.0 发布了,一百五十倍的性能提升!

这主要是纯计算方面性能的提高, 实际的lua里面有多少是跑纯计算的

大部分的性能耗费更多在io上,

看介绍, 主要是使用汇编级的代码替换及高级指令, 脚本语言本身需要跨平台的伪码变换在纯计算方面性能损耗那当然是相当大, lua已经算很好了(这本来就是脚本语言最弱的地方), 而改成本地代码自然好很多, 但要综合平均起来, 提高的幅度很有限

不过如果是补充了在纯计算方面的弱势, 那么lua真的可以笑傲江湖了

jzhang2014-4-7 15:44:00

在服务器端跑的Lua脚本还是以计算为主的

以LPC为例,大部分的LPC脚本都用于处理游戏策略,战斗,统计,等等。真正的IO大部分都是MudOS用C提供的接口。所以LPC的代码经常需要用延迟调用,把一次计算拆分成多次来进行。

发表评论

您还没有登录,请[登录]或[注册]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实验_Java实验报告(实验一)

课程:Java程序设计 班级: 1351姓名:王玮怡 学号:20135116成绩: 指导教师:娄嘉鹏 实验日期:2015.04.15实验密级: 预习程度&#…

java web 文件上传工具类_JavaWeb中实现文件上传的方式有哪些?

上回我们说了下文件下载的方式有哪些,这次我们从不同的环境下简单来说说文件上传的方式有哪些。文件上传的方式Servlet2.5 方式Servlet3.0 方式SpringMVC 方式案例实操Servlet2.5 方式文件上传涉及到前台页面的编写和后台服务器端代码的编写,前台发送文件…

socket connect java_网络编程 – 为什么Java的socket.connect()消耗100%的cpu资源?

我创建了一个线程池并为它提供了50个连接到服务器的任务.所以一旦完成连接,发送一些数据,然后断开连接.它的读取超时设置为5秒(当然是5000长).我甚至将线程池设置为最大大小为1.然后在linux上启动它,然后运行htop(更好的top版本)来检查CPU使用率.我一直在100%看到我…

python renamer模块_artellapipe-tools-renamer-以简单的方式重命名DCC对象的工具-Tomas Poveda...

作者:Tomas Poveda### 作者邮箱:tpovedatdgmail.com### 首页:https://github.com/ArtellaPipe/artellapipe-tools-renamer### 文档:None### 下载链接artellapipe-tools-renamerTool to rename DCC objects in an easy way.. image:: https://travis-ci.com/ArtellaPipe/artella…

类库java_Java类库和常用类库介绍

Java类库和常用类库介绍2018-09-20Java类库和常用类库介绍——序作者:zccstJava类库概念:Java的应用程序接口(API)以包的形式来组织,每个包提供了大量的相关类、接口和异常处理类,这些包的集合就是Java的类库包名以Java开始的包是…

python自己重启自己程序_python 自动重启本程序

#!/usr/local/bin/python#-*- coding: UTF-8 -*-#####################################################################import os,time#def close():# print "程序重启!!!!"# print time.strftime(%Y.%m.%d-%H.%M.%S…

centos上如何装python_centos如何安装Python3

摘自:https://www.cnblogs.com/Mr-wangxd/p/7028285.htmlLinux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的&…

gnu.getopt java_c – 用于GNU getopt()的-W选项是什么?

The -W (capital-W) option shall be reserved for vendor options.If optstring contains W followed by a semicolon ( ; ), then -W foo is treated as the long option --foo. (The -W option is reserved by POSIX.2 for implementation extensions.)有人能够以更清晰的方…

java 与python读写文件速度_Python和Java读写文件的对比

博主平时用Python比较多,最近因为工作需要使用Java编程,比较之下,发现Python读写文件真是太方便了!Java读写文件非常繁琐,简直让人抓狂!Python读写文件的语句读文件with open(readFile, r) as inFile:for l…

java 字节输出流_Java IO详解(三)------字节输入输出流

那么这篇博客我们讲的是字节输入输出流:InputStream、OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam、FileOutStream)1、字节输出流:OutputStreampublic abstract class OutputStreamextends Objectimplements C…

java 缩略图 库_Thumbnailator:一个高质量Java缩略图开发库

February 24, 2020: Thumbnailator 0.4.11 has been released! See Changes for details.Thumbnailator is now available through Maven!What is Thumbnailator?Thumbnailator is a thumbnail generation library for Java.Why Thumbnailator?Making high-quality thumbnail…

java数据段 静态区_回顾一下基础,关于栈与堆,常量池,静态区

先来张简单的图:1.jpg------------------分割------------------------栈内存:1.操作比较快速.但是为私有.2.线程之间不共享.所以存放一些基本数据类型,局部变量(方法走完就回收了),3.对于引用数据类型的地址引用.堆内存:1.new出来的实例2.成员变量的值(如果是基本数据类型,比如…

java mqtt客户端_java 实现mqtt发送和接收消息客户端具体用法及测试代码

注:客户端代码实现请看我的上一篇1mqtt发送消息发送时不用多讲,每次发送肯定需要运行一次发送消息方法MyMqttClient mqttClient new MyMqttClient();org.junit.Testpublic void testMqtt1() throws InterruptedException, MqttException {final long ti…

java类变量什么时候初始化_Java类变量的初始化时机

先上代码测试类public class MyNumber {public static MyNumber myNumbernew MyNumber(2.8);private static double value20;public double currentvalue;public MyNumber(double number){currentvaluevalue-number;}}里面存放了一些静态变量。调用类double result1 MyNumber.m…

java项目如何更改路径_Java修改eclipse中web项目的server部署路径问题

和MyEclipse不一样,在Eclipse中做的Web项目默认是不支持将项目发布到Web服务器上的,会发布到工作空间的某个目录,因此无法在外部启动Tomcat来运行Web项目,只有打开Eclipse中的服务器,才能运行Web项目。所以要对Eclipse…

Java中stringbutter_java中string与ButterString的区别

String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结。在java中有3个类来负责字符的操作。1.Character 是进行单个字符操作的&#x…

java xpdf 转换成html_java将Word/Excel/PDF文件转换成HTML整理

项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:一、使用Jacob转换Word,Excel为HTML“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32 libraries。”首先下载Jac…

mysql 出现 quot_MYSQL 新版出现 Client does_mysql _ 搞代码

mysql 帮助:A.2.3 Client does not support authentication protocolMySQL 4.1 and up uses an authentication protocol based on a password hashing algorithm that is incompatible with that used by older clients. If you upgrade the server to 4.1, attemp…

java开发有日志存表的吗_Java日志信息存库(logback篇)

一、Logback简介Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J A…

java中filehandler_java – 如何配置特定FileHandler的属性

Java日志记录配置文件允许我定义命名记录器的属性,例如name.heikoseeberger.heikotron.level FINEname.heikoseeberger.heikotron.handlers java.util.logging.FileHandler到现在为止还挺好.现在我想配置特定的FileHandler,例如使用特定的输出文件.不幸的是我只知道如何配置已…