新聞中心
Golang的pprof的使用心得(CPU,Heap)
參照的是 這個(gè)文章
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比青縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式青縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青縣地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
首先自己寫一段demo
里面負(fù)責(zé)2件事
doSomeThingOne
genSomeBytes
運(yùn)行這個(gè)程序go run main.go
To install thewrk,you need only:
git clone
cd wrk
make
wrk relies on the openssl and luajit, learn more from its github page
Generating requests
Our demo is listening on the port 9876 ,so let's generate some requests for that.
./wrk -c400 -t8 -d5m
-c400means we have 400 connections to keep open
-t8means we use 8 threads to build requests
-d5mmeans the duration of the test will last for 5 minutes
用這段命令來(lái)壓服務(wù)器
Our server is very busy now and we can see some information via browser. Inputlocalhost:9876/debug/pprofyou will see:
然后用命令進(jìn)入
在這里能看見(jiàn)各種方法的運(yùn)行時(shí)間
所以我們安裝Graphviz 在mac下
brew install graphviz
之后再這個(gè)(pprof)里面輸入web
會(huì)生產(chǎn)一個(gè)svg文件
用瀏覽器打開(kāi)我們就會(huì)看到
很顯然gensomebytes里面的math方法最消耗時(shí)間。這個(gè)就是我們優(yōu)化的對(duì)象
其實(shí)也很方便在
localhost:9876/debug/pprof/profile改成
localhost:9876/debug/pprof/heap
后面的結(jié)果一樣。。和cpu一樣可以看到那個(gè)heap占用了大量的內(nèi)存到時(shí)候優(yōu)化吧
這個(gè)文章里面的第一個(gè)方法就可以做測(cè)試內(nèi)存占用的.
有空試試把
分布式程序 A B C D 4個(gè)進(jìn)程在服務(wù)器. 監(jiān)控程序E 打包程序F
寫一個(gè)監(jiān)控程序定時(shí)監(jiān)控這4個(gè)進(jìn)程的CPU 內(nèi)存(搞成配置文件)
達(dá)到性能瓶頸(例如 90%CPU 內(nèi)存剩下10%)? E用shell觸發(fā)打包程序F把pprof等信息打包.并發(fā)送郵件
給配置者.
lua和jit速度對(duì)比
lua是門語(yǔ)言,語(yǔ)言和框架是不同的。nodejs是集成了v8引擎的軟件,有了它用javascipt寫后端了,它是軟件而不是一門編程語(yǔ)言。
因?yàn)樾阅苤皇橇餍械囊粋€(gè)因素,如果全看性能,那現(xiàn)在都是匯編、c語(yǔ)言的天下了。
javascript能流行有它的機(jī)遇。瀏覽器天生只支持javascript(vbscript可以忽略不計(jì)),讓它在前端有了不可代替的地位,這是它最大的優(yōu)勢(shì)。而nodejs的出現(xiàn)讓javascipt站上更大的舞臺(tái),后端也能和其他語(yǔ)言競(jìng)爭(zhēng)了,這讓它有了更加獨(dú)特的魅力。
lua性能好,但是應(yīng)用上場(chǎng)景不明確。我知道,有的游戲可以用lua寫腳本,還可以做網(wǎng)站后臺(tái),但是這些都面臨著其他編程語(yǔ)言的競(jìng)爭(zhēng),不是不可替代的,缺少噱頭,曝光率小一些。
openresty 用什么ide
1.OpenResty是什么,適合什么場(chǎng)景下使用
和大部分知名開(kāi)源軟件誕生在歐美國(guó)家不同,OpenResty自身和依賴的主要組件都是金磚國(guó)家的開(kāi)發(fā)者發(fā)明的,這點(diǎn)還挺有意思。
Nginx是俄羅斯人發(fā)明的,Lua是巴西幾個(gè)教授發(fā)明的,中國(guó)人章亦春把LuaJITVM嵌入到Nginx中,實(shí)現(xiàn)了OpenResty這個(gè)高性能服務(wù)端解決方案。
通過(guò)OpenResty,你可以把nginx的各種功能進(jìn)行自由拼接,更重要的是,開(kāi)發(fā)門檻并不高,這一切都是用強(qiáng)大輕巧的Lua語(yǔ)言來(lái)操控。
它主要的使用場(chǎng)景主要是:
在Lua中揉和和處理各種不同的nginx上游輸出(Proxy,Postgres,Redis,Memcached等)
在請(qǐng)求真正到達(dá)上游服務(wù)之前,Lua可以隨心所欲的做復(fù)雜的訪問(wèn)控制和安全檢測(cè)
隨心所欲的操控響應(yīng)頭里面的信息
從外部存儲(chǔ)服務(wù)(比如Redis,Memcached,MySQL,Postgres)中獲取后端信息,并用這些信息來(lái)實(shí)時(shí)選擇哪一個(gè)后端來(lái)完成業(yè)務(wù)訪問(wèn)
在內(nèi)容handler中隨意編寫復(fù)雜的Web應(yīng)用,使用同步但依然非阻塞的方式,訪問(wèn)后端數(shù)據(jù)庫(kù)和其他存儲(chǔ)
在rewrite階段,通過(guò)Lua完成非常復(fù)雜的URLdispatch
用Lua可以為nginx子請(qǐng)求和任意location,實(shí)現(xiàn)高級(jí)緩存機(jī)制
組織OpenResty技術(shù)大會(huì)之前,我一直認(rèn)為自己是一個(gè)孤獨(dú)的OpenResty使用者,覺(jué)得自己在使用一個(gè)冷門的技術(shù)。
雖然大家都聽(tīng)說(shuō)過(guò)OpenResty或者ngx_lua,但感覺(jué)用在生產(chǎn)環(huán)境中使用的卻少之又少,除了幾個(gè)CDN公司外,好像沒(méi)有聽(tīng)說(shuō)過(guò)哪家知名互聯(lián)網(wǎng)公司在使用。而CDN行業(yè)之所以使用,很多是受到cloudflare技術(shù)棧的影響,OpenResty的作者也在國(guó)外這家CDN公司。
但辦完這個(gè)大會(huì),我發(fā)現(xiàn)使用者真的挺多,奇虎360的所有服務(wù)端團(tuán)隊(duì)都在使用,京東、百度、魅族、知乎、優(yōu)酷、新浪這些互聯(lián)網(wǎng)公司都在使用。有用來(lái)寫WAF、有做CDN調(diào)度、有做廣告系統(tǒng)、消息推送系統(tǒng),還有像我們部門一樣,用作APIserver的。有些還用在非常關(guān)鍵的業(yè)務(wù)上,比如開(kāi)濤在高可用架構(gòu)分享的京東商品詳情頁(yè),是我知道的ngx_lua最大規(guī)模的應(yīng)用。
2.奇虎企業(yè)安全服務(wù)端技術(shù)選型的標(biāo)準(zhǔn)
先說(shuō)下3年多前做架構(gòu)選型的時(shí)候,我為什么會(huì)選擇OpenResty?
其實(shí)架構(gòu)如何設(shè)計(jì)并不重要,因?yàn)槊考夜?,每個(gè)團(tuán)隊(duì),他們的公司文化和技術(shù)背景各不相同,生搬硬套會(huì)適得其反。重要的是當(dāng)初為什么這么選擇,中途為什么調(diào)整。
我們的產(chǎn)品要求單機(jī)上面,服務(wù)端提供高性能的API接口,QPS至少過(guò)萬(wàn),未來(lái)需要支撐到10萬(wàn)。我們并沒(méi)有急于去使用PHP、Python或者其他的語(yǔ)言來(lái)實(shí)現(xiàn)功能,而是先勾勒出一個(gè)理想化的技術(shù)模型。
這個(gè)模型應(yīng)該具備:
非阻塞的訪問(wèn)網(wǎng)絡(luò)IO。在連接MySQL、Redis和發(fā)起HTTP請(qǐng)求時(shí),工作進(jìn)程不能傻傻的等待網(wǎng)絡(luò)IO的返回,而是需要支持事件驅(qū)動(dòng),用協(xié)程的方式讓CPU資源更有效的去處理其他請(qǐng)求。很多語(yǔ)言并不具備這樣的能力和周邊庫(kù)。
有完備的緩存機(jī)制。不僅需要支持Redis、Memcached等外部緩存,也應(yīng)該在自己的進(jìn)程內(nèi)有緩存系統(tǒng)。我們希望大部分的請(qǐng)求都能在一個(gè)進(jìn)程中得到數(shù)據(jù)并返回,這樣是最高效的方法,一旦有了網(wǎng)絡(luò)IO和進(jìn)程間的交互,性能就會(huì)受到很大影響。
同步的寫代碼邏輯,不要讓開(kāi)發(fā)者感知到回調(diào)和異步。這個(gè)也很重要,程序員也是人,代碼應(yīng)該更符合人的思維習(xí)慣,顯式的回調(diào)和異步關(guān)鍵字,會(huì)打斷思路,也給調(diào)試帶來(lái)困難。
最好是站在巨人肩上,基于成熟的技術(shù)上搭建。采用一門全新誕生的語(yǔ)言和技術(shù),需要經(jīng)歷語(yǔ)言自身發(fā)展期頻繁調(diào)整的陣痛,還可能站錯(cuò)隊(duì)。
不僅支持Linux平臺(tái),還需要支持Windows平臺(tái),這個(gè)是我們產(chǎn)品很特別的需求,很多中小企業(yè)用戶還是習(xí)慣Windows的操作,不具備Linux的維護(hù)能力。
基于以上幾點(diǎn)的考慮,考察了當(dāng)時(shí)的一些方案,選擇了OpenResty。
首先,它最大的特點(diǎn)就是用同步的代碼邏輯實(shí)現(xiàn)非阻塞的調(diào)用,其次它有單進(jìn)程內(nèi)的LRUcache和進(jìn)程間的shareDICTcache,而且它是揉合nginx和LuaJIT而產(chǎn)生的。而且nginx有Windows版本,雖然有非常多的限制,但這些限制都是可以解決的,nginx官方Windows版本中不支持的特性,我們開(kāi)源出來(lái)的版本都解決了。
第一次看到這樣的方案,我覺(jué)得它肯定會(huì)顛覆高性能服務(wù)端的開(kāi)發(fā)。為什么呢?在我之前的公司里,每天會(huì)有近百億次的查詢請(qǐng)求,而服務(wù)器只用了十臺(tái)。
我們采用了nginxC模塊+內(nèi)置在nginx中的K-V數(shù)據(jù)庫(kù)(自己開(kāi)發(fā)的),來(lái)實(shí)現(xiàn)所有的業(yè)務(wù)邏輯,達(dá)到這個(gè)目標(biāo)。聽(tīng)上去很簡(jiǎn)單,但是過(guò)程非常艱辛,兩三個(gè)十幾年工作經(jīng)驗(yàn)的大牛做了一年多才穩(wěn)定下來(lái)。絕大部分開(kāi)發(fā)能力不足,只能望塵莫及。而且后續(xù)的調(diào)試和維護(hù),也會(huì)花費(fèi)不少精力。
但是OpenResty的出現(xiàn)改變了這一切,OpenResty非常的pythonic,適合人類的正常思維。新手經(jīng)過(guò)一兩個(gè)月的學(xué)習(xí),做出來(lái)的API,就可以達(dá)到nginxC模塊的性能,而且代碼量大大減少,也方便調(diào)試。
3.以奇虎和新浪為例,如何在項(xiàng)目中引入新技術(shù)
技術(shù)選型只是第一步,如何才能在一個(gè)產(chǎn)品或者項(xiàng)目中引入OpenResty這個(gè)新的技術(shù)呢?我拿奇虎企業(yè)安全和新浪移動(dòng)這兩家公司真實(shí)發(fā)生的案例給大家看看。我和新浪移動(dòng)的周晶,都是在一個(gè)有成熟產(chǎn)品的部門,用一兩個(gè)人的力量,把一個(gè)新技術(shù),替換掉了原有的技術(shù)架構(gòu)。但由于企業(yè)產(chǎn)品和個(gè)人產(chǎn)品的不同,方法有很大的不一樣。
先說(shuō)我所在奇虎企業(yè)安全。我在2012年初加入這個(gè)部門,當(dāng)時(shí)產(chǎn)品主打免費(fèi),目標(biāo)用戶是小企業(yè)。所以架構(gòu)設(shè)計(jì)上面,只考慮了幾十點(diǎn)、幾百點(diǎn)的終端請(qǐng)求,使用了非常強(qiáng)綁定的Windows平臺(tái)技術(shù),而且傾向于不用開(kāi)源軟件,自己新做一個(gè)更適合自己的框架。包括自己用C++開(kāi)發(fā)的Webserver,自己寫的PHP路由和框架,數(shù)據(jù)存儲(chǔ)在sqlite里面。
我?guī)兔π薷牧藘蓚€(gè)月PHP的bug,看明白了技術(shù)架構(gòu)的思路之后,就去新開(kāi)的一個(gè)產(chǎn)品線了。這是一個(gè)實(shí)驗(yàn)性的產(chǎn)品,主要面對(duì)央企和專用網(wǎng),一個(gè)網(wǎng)絡(luò)中有上百萬(wàn)的終端。
剛開(kāi)始沒(méi)有什么人關(guān)注,我就直接采用了Linux+OpenResty+Redis+Postgres的開(kāi)源組件,性能測(cè)試甩之前的N條街。后面這個(gè)實(shí)驗(yàn)性的產(chǎn)品,和之前的產(chǎn)品,合并為一個(gè)產(chǎn)品,技術(shù)上面就割裂為兩套架構(gòu)。老功能用老架構(gòu),新功能用新架構(gòu)。
隨著越來(lái)越多大用戶的增加,原有的技術(shù)架構(gòu)開(kāi)始捉襟見(jiàn)肘,技術(shù)債務(wù)越積壓越多。隨著用戶的抱怨,sqlite被拋棄,全面換成Postgres。但對(duì)于自己開(kāi)發(fā)的框架還是有些敝帚自珍。
期間通過(guò)對(duì)比測(cè)試、OpenResty培訓(xùn)還有多次用戶性能問(wèn)題排查,讓開(kāi)發(fā)同學(xué)們都知道這門技術(shù)的優(yōu)勢(shì)。快被加班壓垮的開(kāi)發(fā)同學(xué),逐漸開(kāi)始選擇使用OpenResty而不是自研的框架,來(lái)進(jìn)行新功能的開(kāi)發(fā),以及舊功能的遷移,來(lái)避免加班。
在產(chǎn)品重構(gòu)的時(shí)候,之前自研的服務(wù)端框架被完全拋棄,服務(wù)端開(kāi)發(fā)的同學(xué)從8、9個(gè)人減少到3個(gè)人。在新技術(shù)的引入過(guò)程中,我們沒(méi)有采用強(qiáng)制的舉措,因?yàn)槠髽I(yè)產(chǎn)品需要穩(wěn)定,用戶處部署的版本更新很慢。
而新浪移動(dòng)周晶的實(shí)踐,對(duì)大家更有參考意義。新浪移動(dòng)最開(kāi)始是基于Apache,用PHP來(lái)處理用戶請(qǐng)求。Apache是同步多進(jìn)程模型,在并發(fā)請(qǐng)求不多的情況下沒(méi)有問(wèn)題。
但是總是會(huì)有突發(fā)新聞,比如馬航失聯(lián)、文章出軌等,突發(fā)的高流量把后臺(tái)壓垮了幾次。而且可以預(yù)見(jiàn)世界杯的流量也會(huì)很大,所以周晶花幾個(gè)月時(shí)間,用nginx替換了Apache,使用nginx的fast_cgi_cache,QPS提升了一個(gè)數(shù)量級(jí)。
新浪移動(dòng)后臺(tái)的接口都是使用PHP來(lái)實(shí)現(xiàn)的,在高并發(fā)下有些力不從心。而nginx簡(jiǎn)單的緩存雖然能滿足性能,但不能滿足業(yè)務(wù)精細(xì)化和數(shù)據(jù)一致性的要求,需要找PHP之外的解決方案,前提是讓PHP的開(kāi)發(fā)能夠舒適的使用。node.js的回調(diào)地獄、Go的調(diào)試不方便,都是一個(gè)阻礙。
他們最后選擇了OpenResty,而且基于OpenResty開(kāi)源了一個(gè)Web框架Vanilla(香草),模仿了Yaf的使用習(xí)慣,讓PHP的開(kāi)發(fā)更容易接受和上手。Vanilla已經(jīng)在新浪移動(dòng)開(kāi)始使用,一些核心業(yè)務(wù),比如高清圖和體育直播,正在向這個(gè)框架遷移中。
4.入門痛點(diǎn),以及學(xué)習(xí)的正確方法
我和周晶的入門,都是自己摸著石頭過(guò)河。當(dāng)時(shí)除了Python社區(qū)「大媽」的那篇使用文章外,找不到其他的資料。
奇虎和新浪都用OpenResty成功替換了之前的技術(shù),但問(wèn)題還是挺明顯,就是大家都認(rèn)為自己是孤獨(dú)的使用者,同事中基本沒(méi)有人認(rèn)同。在關(guān)鍵和支撐業(yè)務(wù)上,使用OpenResty有些不放心,都會(huì)在邊緣業(yè)務(wù)上先做嘗試和驗(yàn)證。
雖然OpenResty的性能做的很棒,比肩或者超過(guò)其他所有的高性能解決方案,但是擔(dān)心沒(méi)有學(xué)習(xí)資料、擔(dān)心招不到人、擔(dān)心沒(méi)人交流,可能還擔(dān)心作者章亦春哪天撂挑子不干了,這個(gè)項(xiàng)目就黃了。
高可用架構(gòu)群里的各位都是架構(gòu)師,是技術(shù)決策者,在引入一門新技術(shù)的時(shí)候,肯定會(huì)考慮到這些風(fēng)險(xiǎn)。比如小米科技馬利超在高可用架構(gòu)的分享,他們?cè)趽屬?gòu)系統(tǒng)中曾經(jīng)使用過(guò)ngx_lua,雖然性能滿足需求,但是團(tuán)隊(duì)里面熟悉的人少,最后還是改成了Go語(yǔ)言實(shí)現(xiàn)。
如何解決這些擔(dān)憂?社區(qū)是有過(guò)思考和討論的,我們放在分享最后講。先從一個(gè)嘗試使用這門技術(shù)的開(kāi)發(fā)者的角度看,OpenResty不少基礎(chǔ)工作沒(méi)有完善,友好程度不夠:
只能從源碼安裝,沒(méi)有apt-get、brew等軟件倉(cāng)庫(kù)安裝方法;安裝第三方庫(kù)沒(méi)有PIP、NPM之類的包管理工具,需要去先谷歌,然后拷貝代碼文件到指定的目錄下,才能require使用。
代碼編寫需要修改nginx.conf和對(duì)應(yīng)的lua代碼,即使是helloworld也是如此。當(dāng)然你可以把代碼寫在nginx的配置文件里面,但是生產(chǎn)環(huán)境肯定是要分離的。這種編寫代碼的方式,不像是一個(gè)編程語(yǔ)言,和常規(guī)的編程方式不同。
有獨(dú)特的執(zhí)行階段概念,因?yàn)镺penResty是基于nginx的,所以也繼承它的這種概念。你的代碼邏輯,可能需要放在不同的階段里面運(yùn)行,才能獲取你想要的預(yù)期。而這些階段間信息如何傳遞,以及哪些API不能在某些階段使用,就會(huì)經(jīng)常攔住新手。
遇到問(wèn)題只有郵件列表這一種方式來(lái)溝通,而郵件列表是被墻的。文檔也只有英文版本,導(dǎo)致很多新手的問(wèn)題無(wú)法被解決。
沒(méi)有系統(tǒng)學(xué)習(xí)OpenResty的手段,大都是業(yè)務(wù)需要實(shí)現(xiàn)什么功能,就去文檔和API里面去找。至于方式對(duì)不對(duì),能不能優(yōu)化,就不知道了。
lua是什么語(yǔ)言
Lua 是一個(gè)小巧的腳本語(yǔ)言。作者是巴西人。該語(yǔ)言的設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。它的主頁(yè)是 。
Lua最著名的應(yīng)用是在暴雪公司的網(wǎng)絡(luò)游戲WOW中。
Lua腳本可以很容易的被C/C++代碼調(diào)用,也可以反過(guò)來(lái)調(diào)用C/C++的函數(shù),這使得Lua在應(yīng)用程序中可以被廣泛應(yīng)用。不僅僅作為擴(kuò)展腳本,也可以作為普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和維護(hù)。
Lua由標(biāo)準(zhǔn)C編寫而成,代碼簡(jiǎn)潔優(yōu)美,幾乎在所有操作系統(tǒng)和平臺(tái)上都可以編譯,運(yùn)行。
一個(gè)完整的Lua解釋器不過(guò)200k,在目前所有腳本引擎中,Lua的速度是最快的。這一切都決定了Lua是作為嵌入式腳本的最佳選擇。
Lua 有一個(gè)同時(shí)進(jìn)行的JIT項(xiàng)目,提供在特定平臺(tái)上的即時(shí)編譯功能,這將給Lua帶來(lái)更加優(yōu)秀的性能。請(qǐng)?jiān)L問(wèn) 來(lái)了解這個(gè)項(xiàng)目。
和Python等腳本不同,Lua并沒(méi)有提供強(qiáng)大的庫(kù),這是由它的定位決定的。所以Lua不適合作為開(kāi)發(fā)獨(dú)立應(yīng)用程序的語(yǔ)言。不過(guò)Lua還是具備了比如數(shù)學(xué)運(yùn)算和字符串處理等基本的功能。
Lua 目前的最新版本是 5.1.
luajit什么時(shí)候有的
LuaJIT是一種高性能的Lua虛擬機(jī),它是一個(gè)開(kāi)放源代碼的軟件,由Mike Pall開(kāi)發(fā),旨在提高Lua的性能。LuaJIT的目標(biāo)是提供一個(gè)高性能的Lua虛擬機(jī),它可以比標(biāo)準(zhǔn)Lua虛擬機(jī)提供更快的執(zhí)行速度。LuaJIT的主要特點(diǎn)是它的JIT編譯器,它可以把Lua代碼編譯成機(jī)器碼,從而提高執(zhí)行速度。LuaJIT還提供了一個(gè)可移植的內(nèi)存分配器,可以更有效地管理內(nèi)存,從而提高性能。此外,LuaJIT還支持一些其他功能,例如垃圾回收、多線程編程等。
為什么用 lua 替換 luajit
1、新建一個(gè)名為1.lua的文件,里面只有一句話print("Hello Lua"),新建一個(gè)空的out.lua腳本文件
2、開(kāi)始--運(yùn)行--cmd
3、luac -o out.lua 1.lua
注: luac -o [編譯后腳本名] [腳本名],必要時(shí)帶上腳本路徑,如:
回車之后,再打開(kāi)out.lua就可以看到編譯好的字節(jié)碼了
然后實(shí)驗(yàn)一下,執(zhí)行這個(gè)字節(jié)碼腳本,可以看到lua原生的解釋器可以直接解析luac編譯出來(lái)的bytecode腳本,很方便!
重點(diǎn):
做完了以上的一系列之后,我照著這個(gè)方法編譯項(xiàng)目中的腳本,然后在cocos2dx環(huán)境下使用,發(fā)現(xiàn)不行!于是又查了一下資料,發(fā)現(xiàn)2dx使用的是luajit,lua原生編譯出來(lái)的bytecode和luajit是不兼容的,所以照著上面方法編譯出來(lái)的bytecode腳本無(wú)法在2dx中使用。
解決這個(gè)問(wèn)題其實(shí)很簡(jiǎn)單,就是用2dx自帶的luajit編譯lua腳本,下面附上luajit編譯bytecode的方法:
1、在cocos2d-x-2.2.3\scripting\lua\luajit\LuaJIT-2.0.1\src目錄下有個(gè)msvcbuild.bat批處理文件,需要先把luajit.exe這個(gè)東西給編譯出來(lái)。
2、打開(kāi)visual studio的命令行工具,這個(gè)只要裝了vs都會(huì)有,在安裝目錄里面可以找到。
3、用vs的命令行工具cd到luajit的src目錄
4、執(zhí)行msvcbuild.bat批處理文件,編譯出luajit.exe
編譯完成之后,會(huì)在src目錄下生成一系列文件,其中有一個(gè)luajit.exe
接下來(lái)就可以使用luajit.exe編譯lua腳本的bytecode了:luajit -b [腳本名] [編譯后的腳本名],執(zhí)行完后會(huì)在src目錄下生成一個(gè)已經(jīng)編譯成bytecode的jit.lua文件
下面把編譯之后的jit.lua放在2dx中試一下,以HelloLua工程為基礎(chǔ),把jit.lua放到\samples\Lua\HelloLua\Resources下,修改AppDelegate.cpp中的lua調(diào)用為std::string path = CCFileUtils::sharedFileUtils()-fullPathForFilename("jit.lua");
分享文章:luajitGo語(yǔ)言 go luajit
本文網(wǎng)址:http://www.dlmjj.cn/article/docjpgj.html