• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
igdshare 110220: LuaJIT intro
 

igdshare 110220: LuaJIT intro

on

  • 2,034 views

A simple introduction to Lua and LuaJIT.

A simple introduction to Lua and LuaJIT.
In chinese, sorry.

http://blog.igdshare.org
http://www.youtube.com/user/igdshare

Statistics

Views

Total Views
2,034
Views on SlideShare
1,705
Embed Views
329

Actions

Likes
2
Downloads
21
Comments
0

6 Embeds 329

http://blog.igdshare.org 149
http://igdshare.blogspot.com 88
http://cubeat.game.tw 74
http://igdshare.blogspot.tw 16
http://www.slideshare.net 1
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    igdshare 110220: LuaJIT intro igdshare 110220: LuaJIT intro Presentation Transcript

    • LuaJIT a Just-in-Time compiler for the language Lua
    • 誰在用 Lua
      • World of Warcraft
      • Angry Birds
      • Civilization 5
      • Homeworld 2
      • ...
      • http://en.wikipedia.org/wiki/Category:Lua-scripted_video_games
      • ...AND YOU ! (possibly)
    • 認識 Lua
      • 語法簡單、靈活
      • 速度快
      • 體積小
      • 易延展( Lua/C API )
      •   =>Extensible & Embeddable
      • 『通常不獨立使用』
    • Lua 效能
    • Lua 效能
    • LuaJIT
      • http://luajit.org
      • Michael (Mike) Pall
      • 2005~ LuaJIT 1.x (stable 1.1.6)
      • 2009~ LuaJIT 2.0-beta releases
      • Now =>LuaJIT 2.0-beta6
      • (google for LuaJIT Roadmap 2011)
    • Just-in-Time Compiler?
      • 即時編譯器
      • Source code => bytecode => machine code
      • Java Hotspot
      • C# .Net
      • Javascript V8/Trace(Jaeger) Monkey
      • Python Pypy
      • ... 還有很多
    • JIT 效能
    • 速度 & 程式碼量
    • LuaJIT 2.0
      • 超級快
      • 只算 interpreter 也比原本快 2x-4x
      • Lua 5.1 語法完全相同
      • 丟進去就可以用 ( drop-in replacement )
      • Beta 已經很穩定
      • Foreign Function Interface(beta6)
      • 現在只有 x86/64 版本
    • LuaJIT in Games?
        The Settlers 7
      • 搶在上市前實裝 LuaJIT2-beta
      • 個人測試:
      • Civilization 5 只能用 LuaJIT1
      • (可能是因為 bytecode 不相容)
      • Mike 本人透露,還有很多不能講 ...
    • LuaJIT 注意事項
      • Lua table 盡量用,不用怕 overhead
      • 避免大量的 closure (目前)
      • 避免只跑幾次的 inner loop
      • 避免 global object
      • for i = 1, 100000000 do
      •   local t = {'a','b','c'}
      •   for j = 1, 3 do t[j] = .. end
      • End -- p.s. 通常這可以被自動 unroll ,但若其 loop 次數是由變數決定就很難講
    • LuaJIT 注意事項
      • 避免無謂的暫存物件
      • 多用 -jv option 查看執行效果
      • Bytecode 不相容於 Lua 5.1
      • 不打算積極跟上 Lua 5.2
    • LuaJIT 近期重點
      • Qualcomm 贊助 ARM Port !
      • Foreign Function Interface !
      • local ffi = require("ffi")
      • ffi.cdef[[
      • typedef struct { float x,y,z; } SVertex;
      • int MessageBoxA(void*,char const*,char const*,int);
      • ]]
      • ffi.C.MessageBoxA(nil, "Hello world!", "Test", 0)
      • local img = ffi.new("SVertex[?]", 100)
      • img[0].x = 123
    • What's to come?
      • 2011 年內:   LuaJIT 2.0 正式版與 2.1 測試版   ARM port of LuaJIT 2.0  
      • About 2.1 :   New Garbage Collector   FFI C-preprocessor (?)
      •  
    • What's to come?
      • 更遠程: LuaJIT FFI to C++ (!?)
      • Binding 再也不用額外寫,運算可以幾乎都寫在 Lua 裡 ...
      • ...Full Lua 3D engines ?
      • ...Full Lua Triple-A Titles ?  
      • What's in the next level ?
    • My 2 Cents: 沒有天天過年的啦
      • Lua nature1 :沒有統一穩定的電池
      • Lua nature2 :大概永遠不適合大團隊開發
      • 因為太簡單,大家自成一套 =>
      •  結果反而不穩定、難用?
      • x86/64 、 ARM 以外的平台大概有得等
    • Demo Time
      • Game of Life benchmark :
      •  純邏輯速度比較 C/C++
      •  加上繪圖速度比較 =>
      •    GL primitive 、 Vertex Array 、
      •    VBO 、 PBO
      •  繪圖加速情況下把邏輯加速關掉
      • [1] https://github.com/archilifelin/mysandbox/blob/master/lua/lifegame_ffi_sdl_gl.lua
      • [2] https://github.com/archilifelin/mysandbox/tree/master/cpp/lifegame_sdl
    • Lua 框架
      • CoronaSDK
      • Scripting-Layer for Android (SL4A)
      • Gamekit (based on Ogre)
      • ShiVa Engine
      • Love2D
      • ...and more
    • Love2D
      • http://love2d.org
      • OpenGL 加速的輕量 2D 遊戲框架
      • Box2D integration
      • TrueType Font ( no unicode yet )
      • Pure Lua
      function love.draw() love.graphics.print('Hello World!', 400, 300) end
    • Q & A 資料來源
      • Lua mailing list
      • http://luajit.org
      • http://love2d.org
      • http://en.wikipedia.org
      • http://shootout.alioth.debian.org
      • cubeat dot tw at gmail dot com
      • http://igdshare.blogspot.com