标签: luajit

为什么LuaJIT这么好?

编辑:不幸的是,LuaJIT在下面的链接中被取消了比较.

这种编程语言的比较表明,LuaJIT比普通的Lua实现有十倍以上的改进.为什么变化如此之大?是否有一些特定的Lua使得它从JIT编译中受益匪浅?Python是动态类型化的,并且也被编译为字节码,那么为什么PyPy(我相信现在有JIT)显示出如此大的性能提升?

lua jit luajit

52
推荐指数
1
解决办法
2万
查看次数

LuaJIT真的比其他所有JIT动态语言都快吗?

根据计算机语言基准测试游戏,LuaJIT实现似乎击败了所有其他JIT-ed动态语言(V8,Tracemonkey,PLT Scheme,Erlang HIPE)一个数量级.

我知道这些基准测试不具代表性(正如他们所说:"哪种编程语言实现具有最快的基准测试程序?"),但这仍然令人印象深刻.

在实践中,情况确实如此吗?有人测试过Lua的实现吗?

lua jit luajit

48
推荐指数
3
解决办法
3万
查看次数

如何将Lua脚本编译成单个可执行文件,同时仍然获得快速的LuaJIT编译器?

如何将Lua脚本编译成单个可执行文件,同时还能获得LuaJIT的超快性能优势?

背景:

  • 我的Lua脚本用于我创建的Web应用程序(例如,托管http://example.com)
  • 我目前的技术堆栈是NGINX(网络服务器),Lua/LuaJIT(检索动态内容的语言)
  • 我有大约50多个.lua组成我的Web应用程序的文件(来自模型/视图/控制器)
  • FreeBSD 9操作系统

为了简化部署,我想将运行我的Web应用程序的所有.lua脚本编译成单个可执行文件.

  1. 这可能吗?怎么样?

    似乎Lua官方附带了一个名为SRLua的库

  2. 将我的.lua编译成单个可执行文件会有什么负面影响(例如性能会变差等等)?

lua compilation nginx luajit

39
推荐指数
1
解决办法
2万
查看次数

如何检查nginx是否使用LuaJit而不是Lua?

我安装http-lua-module了nginx,制作了一个完美无缺的脚本,但现在我想确定nginx 使用LuaJit而不是Lua(因为我的研究显示LuaJit更快).

我添加到.bushrc那些代码行:

export LD_LIBRARY_PATH=/usr/local/luajit/lib:$LD_LIBRARY_PATH
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
Run Code Online (Sandbox Code Playgroud)

我也重新编译了nginx,现在我只想确保它使用LuaJit.

lua nginx luajit

17
推荐指数
1
解决办法
7274
查看次数

当通过命令行发送ctrl-c时,如何在lua中捕获ctrl-c

我想知道来自命令行的用户何时按下control-c,这样我就可以节省一些东西.

我该怎么做呢?我看了,但还没有看到任何东西.

注意:我对lua有点熟悉,但我不是专家.我主要使用lua来使用库Torch(http://torch.ch/)

lua luajit torch

17
推荐指数
2
解决办法
2487
查看次数

如何在Windows 8.1上安装Torch?

Torch是一种科学计算框架,广泛支持机器学习算法.由于简单快速的脚本语言,LuaJIT和底层的C/CUDA实现,它易于使用且高效.

问:

有没有办法在MS Windows 8.1上安装火炬?

lua luajit windows-8.1 torch

15
推荐指数
1
解决办法
3万
查看次数

如何使用Luarocks为Lua5.2和5.1安装库?

我正在编写一个小的Lua项目并使用Luarocks来安装我的第三方依赖项.我机器上的默认Lua版本是5.2,到目前为止一切正常.

但是,今天我偶然发现了一个令我困惑的问题.我想在Lua 5.1和Luajit上运行我的程序,看看它是否也适用于那些版本,但我很难让Luarocks下载相应版本的依赖项.作为最后的手段,我试图告诉Lua5.1使用Luarocks安装的5.2库(通过将LUA_PATH环境变量设置为相同的值LUA_PATH_5_2)但不幸的是这还不够:我的项目依赖于LuaFileSystem,一个C-基于模块,所以我需要为5.1和5.2安装单独的版本.

如何安装依赖项的5.1和5.2版本,我该怎么办?我是否需要将一些参数传递给luarocks install命令?我是否需要在我的机器上安装多个Luarocks实例?令我困惑的一件事是.luarocks文件夹里面的东西被分类在5.2子文件夹下(〜/ .luarocks/share/lua/5.2 /),这表明可能有办法在兄弟5.1文件夹中安装东西但是在同时只有一个bin文件夹,这表明luarocks一次只能处理一个版本的Lua ...

lua luajit luarocks

14
推荐指数
4
解决办法
2万
查看次数

嵌入时如何使用LuaJIT的ffi模块?

我正在尝试将LuaJIT嵌入到C应用程序中.代码是这样的:

#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <stdlib.h>
#include <stdio.h>

int barfunc(int foo)
{
    /* a dummy function to test with FFI */ 
    return foo + 1;
}

int
main(void)
{
    int status, result;
    lua_State *L;
    L = luaL_newstate();

    luaL_openlibs(L);

    /* Load the file containing the script we are going to run */
    status = luaL_loadfile(L, "hello.lua");
    if (status) {
        fprintf(stderr, "Couldn't load file: %s\n", lua_tostring(L, -1));
        exit(1);
    }

    /* Ask Lua to run our little script */
    result …
Run Code Online (Sandbox Code Playgroud)

c lua ffi luajit

11
推荐指数
1
解决办法
7941
查看次数

如何在Linux上超过64位LuaJIT的1GB内存限制?

概述是我正在编写代码来理解我的问题空间,并且我遇到了'PANIC:调用Lua API(内存不足)时出现无保护错误'错误.我正在寻找绕过这个限制的方法.

环境底线是Torch,一个在LuaJIT上运行的科学计算框架,LuaJIT在Lua上运行.我需要Torch,因为我最终想要在GPU上使用神经网络来解决我的问题,但为了实现这一目标,我需要很好地表达问题以提供给网络.我(卡住)在Centos Linux上,我怀疑尝试从32位模式重建源代码(据报道将LuaJIT内存限制扩展到4gb)将是一个噩梦,如果它适用于所有的库.

问题空间本身可能不是特别相关,但总的来说,我有点数据文件,我计算这些距离之间的距离然后bin(即直方图)这些距离试图找出最有用的范围.方便的是,我可以创建复杂的Lua表,其中包含各种箱子和torch.save(),这些都是数不清的,然后在以后拿起并检查不同的标准化等等 - 所以经过一个月的游戏后我发现这是真的很容易和强大.

我可以使它看起来最多3个距离,每个15个容器(15x15x15加上开销),但这只是通过添加显式的garbagecollection()调用并使用fork()/ wait()为每个数据文件,以便外部循环将保持运行,如果一个数据文件(几千)仍然打破内存限制并使孩子崩溃.当每个成功的子进程现在必须读取,修改和写入当前的bin计数集时,这会变得非常痛苦 - 我最大的文件目前是36mb.我想要更大(更多的垃圾箱),并且真的更愿意只持有15个我无法访问的RAM的计数.

所以,这里有一些我想过的路径; 如果你能确认/否认他们中的任何一个会/不会让我超出1gb边界,或者只是提高我的效率,请发表评论.如果您可以提出我没想过的其他方法,请发表评论.

  • 我错过了一个触发Lua进程的方法,我可以从中读取任意表格吗?毫无疑问,我可以将我的问题分解成更小的部分,但是从stdio解析返回表(从系统调用到另一个Lua脚本)似乎容易出错,而写入/读取小型中间文件将是很多磁盘i/o.

  • 我错过了一个存储和访问表高内存模块?这似乎是我真正想要的,但还没有找到它

  • FFI C数据结构可以放在1gb之外吗?看起来似乎并非如此,但我当然缺乏对造成限制的原因的全面理解.我怀疑这会让我比普通的Lua表更能提高效率,因为这些表已经超越原型设计了吗?(除非我为每个更改做了一堆编码)

  • 当然我可以通过在C中写一个扩展来解决(Torch似乎支持超出限制的网络),但是我的简短调查发现了对'lightuserdata'指针的引用 - 这是否意味着更正常的扩展赢了也不到1gb以外?这看起来似乎也应该是原型制作练习的开发成本.

我很了解C,所以走FFI或扩展路线并没有打扰我 - 但我从经验中知道,以这种方式封装算法既可以非常优雅,又可以通过两个地方来隐藏错误.处理包含堆栈中表格中的表格的数据结构似乎也不是很好.在我做出这些努力之前,我想确定最终结果真的能解决我的问题.

感谢阅读长篇文章.

lua luajit torch

11
推荐指数
2
解决办法
7866
查看次数

LuaJIT FFI有多难?

我最近调查了Lua,看起来真的很棒.唯一令人烦恼的是它缺乏(标准)库.但随着JIT编译器出现了一个很好的FFI C接口.

来自java背景,我试图尽可能地避免使用C,所以我的问题是:有任何人对LuaJIT有一些经验,特别是它的FFI接口,以及为几乎没有知识的人设置库有多困难C?

c lua ffi luajit

10
推荐指数
1
解决办法
3660
查看次数

标签 统计

lua ×10

luajit ×10

torch ×3

c ×2

ffi ×2

jit ×2

nginx ×2

compilation ×1

luarocks ×1

windows-8.1 ×1