「lua对比java」lua对比c#性能

博主:adminadmin 2023-03-21 01:31:06 90

今天给各位分享lua对比java的知识,其中也会对lua对比c#性能进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

lua和.netcore对比

回答:Lua是非常快的解释语言,甚至快于一些JIT,它最大的缺点是当出现大量的(re)alocating(分配或再分配)时会出现性能下降

netcore是一个跨平台的高性能开源框架用具生成基于云连接的 nternet 的新的应用程序,可以建造 web 应用程序和服务, lot 应用和移动后端,可以在 Windows , macOs ,和 Linux 上进行开发和部署

lua和java有关系吗

ava和lua之间进行交互,可是用一种基于jni的luajavaBridge方法,目前已经集成在quick-cocos引擎中了。

luaj的功能整理:

1.lua能够查找java的方法;

2.lua能够把函数作为参数传入到java;

3.lua能够从java获得查找调用方法的返回值;

4.java能够调用lua的函数;

如何在Java中使用Lua脚本语言

LuaJava实际上就是按照Lua官方文档, 把Lua的C接口通过JNI包装成Java的库. 下载, 里面是一个.dll, 一个.jar. 把.dll放到java.library.path 下, 再把.lib放到classpath 中, helloworld运行OK.

但是, 测试的时候, 很快发现了第一个问题: 在调用LuaJava中提供的LuaState.pushInteger 方法的时候, 出现了错误 : Unsatisfied Link Error . 其他的LuaState.pushNumber 方法倒是没有问题. 用Depends工具看了下, 这个.dll居然没有导出pushInteger 这个函数。

(1).下载LuaJava的源代码, 查看了下Luajava.c 和 Luajava.h, 发现果然里面有点问题, 在.h里面定义了JNI中对应Java函数的C函数

JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger 

但是.c中没有实现这个函数. 无语, 看来大马虎哪都有啊. 幸亏有源代码, 照猫画虎在Luajava.c中加上这个函数的实现,

(2).然后编译. 编译也出现了问题了, 官方文档中说可以用VC++来Build, 但是没有说官方用的是什么版本. 我用VC2005就不行. 好在Luajava比较小, 就一个.h 一个 .c , 在VC中新建一个.dll项目, 把文件加进去, 修改一下build参数 (Include 需要加上lua的头文件, lib中需要加上lua的.lib文件, 另外要选上 Compile as C Code (/TC) ) Build, 通过了.

这时再在Java中调用pushInteger方法就没有问题了.

在测试中, 发现Luajava提供的文档中, 对于Lua脚本怎么调用Java对象/方法很详细, 但是在Java中怎么调用Lua函数/取得返回值 就没有. 参考了 的Lua C文档, 实现了传递对象到Lua中并取得返回值的代码:

Test1: 测试传递简单类型, 并取得返回值:

Lua 脚本(test.lua):

function test(a,b)

return a+b

end 

Java代码:

static {

//加载Lua5.1.dll, 因为LuaJava最后还是要调用Lua的东西

System.loadLibrary("lua5.1");

}

public static void main(String[] argu) throws LuaException {

LuaState L = LuaStateFactory.newLuaState();

L.openLibs();

//读入Lua脚本

int error = L.LdoFile("test.lua");

if (error != 0) {

System.out.println("Read/Parse lua file error. Exit.");

return;

}

//找到函数test

L.getField(LuaState.LUA_GLOBALSINDEX, "test");

//参数1压栈

L.pushInteger(1);

//参数2压栈

L.pushInteger(2);

//调用!! 一共两个参数, 1个返回值

L.call(2, 1);

//保存返回值, 到a中

L.setField(LuaState.LUA_GLOBALSINDEX, "a");

//读入a

LuaObject l = L.getLuaObject("a");

//打印结果.

System.out.println("Result is " + l.getString());

L.close();

}

测试2: 传递Java对象

class Value {

public int i;

public void inc() {

i++;

}

public int get() {

return i;

}

public String toString() {

return "Value is " + i;

}

}

Lua脚本: (该脚本中调用两次对象的inc方法, 并调用get方法输出结果)

function test1(v)

v:inc();

v:inc();

print("In lua: " .. v:get());

return v

end 

Java 代码: (前面都一样, 略)

//找到函数est1

L.getField(LuaState.LUA_GLOBALSINDEX, "test1");

//生成新的对象供测试

Value v = new Value();

//对象压栈

L.pushObjectValue(v);

//调用函数test1, 此时1个参数, 1个返回值

L.call(1, 1);

//结果放在b中.

L.setField(LuaState.LUA_GLOBALSINDEX, "b");

LuaObject l = L.getLuaObject("b");

System.out.println("Result is " + l.getObject());

总结:运行结果:

Result is Value is 2

In lua: 2 

和预期的一致.

c,c++,java,lua那种语言易学?

说实话,都不好学!C语言在处理很多问题是很麻烦,而c++中指针也是一个容易出问题的关键,好不好学在羽你自己的理解和运用的能力,不过推荐你学C++,毕竟它是后起之秀,而且现在c++语言也在逐步淘汰中~~,其实你也可以考虑JAVA,相对容易点 追问: lua呢 就是写脚本的 回答: lua的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua最著名的应用是在暴雪公司的网络游戏WOW中 ,Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。 一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。LUA语言的官方版本只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从而适合嵌入在别的程序里。LUA可以很容易地被扩展:由宿主语言(通常是C或C++)提供其大部分功能,总的一句话,程序语言都是相通的一门学好了,其他的就容易多啦!好友如果你是学专业的话 c++ 绝对不会错,而且其他都必须有所懂,业余的话就够了,lua是在他们的基础上发展的,想往游戏之类的发展的话先了解一下前二者再来学它!!

关于lua对比java和lua对比c#性能的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2023-03-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。