架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8909|回复: 0

Lua和Luajit的优势和不足

[复制链接]
发表于 2018-4-27 09:44:40 | 显示全部楼层 |阅读模式
一、什么是lua&luaJit

QQ截图20180427094417.jpg

lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言
luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。

二、优势

1)lua是一个免费、小巧、简单、强大、高效、轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k。
2)它是用C语言开发的项目,所以可以在大部分的操作系统上运行
3)lua是目前速度最快的脚本语言,既可以提升语言的灵活性还可以最大限度的保留速度
4)其语法非常简单,没有特例
5)lua还可以作为C的API来使用

三、不足和不同

1)lua没有强大的库,所以很多功能实现起来没有python、perl、ruby等脚本语言简洁
2)lua的异常处理功能饱受争议,虽然其提供了pcall和xpcall的异常处理函数
3)lua原生语言中没有提供对unicode编码的支持,虽然可以通过一些折中的办法实现 http://www.cppblog.com/darkdestiny/archive/2009/04/25/81055.html
4)没有提供在C++中应用很广泛的a?b:c的三元运算符操作
5)没有switch...case...语法,只能通过if..elseif..elseif..else..end的方式折中实现
6)在循环时没有提供continue语法
7)没有C++中应用广泛的a++和a+=1等操作
8)lua的索引是从1开始的,而不是我们熟悉的0(string,table)
9)当你给一个元素赋值为nil时相当于这个元素不存在
10)lua的数值类型只有number是没有int,float,double等之分的
11)lua中没有类的概念,其类是通过table的形式来实现的
12)lua中只有nil和false是表示假的,零在lua中是为真的
13)很多程序需要()标示才能运行,比如a={["b"]=5},print(a.b)是可运行的,但是 {["b"]=5}.b就会报错,需要({["b"]=5}).b才可以

四、综述

综上,lua是一个简单,高效所以在游戏逻辑开发和服务器开发中(ngx_lua)得到广泛的应用。

转自:https://blog.csdn.net/ugly_man_/article/details/48577007

附上:

lua 和 luajit 性能对比测试:https://blog.csdn.net/alexwoo0501/article/details/50618031





上一篇:Nginx Lua的WAF应用防火墙漏洞
下一篇:nginx添加第三方模块,以及启用nginx本身支持的模块
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-5-2 05:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表