本篇內(nèi)容主要講解“sysbench怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“sysbench怎么用”吧!
為新蔡等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及新蔡網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、成都做網(wǎng)站、新蔡網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!對于sysbench,里面用到了大量的lua模板,而且lua模板是sysbench壓測的必備選項,所以我們要更好的理解它的實現(xiàn)邏輯,如果可以根據(jù)自己的需求來定制它的實現(xiàn),使得符合真實業(yè)務(wù),這種基準(zhǔn)測試會更有意義。想到了這些,說干就干。
我們從sysbench的角度來理解Lua,開始Lua的學(xué)習(xí)旅程。
sysbench啟動測試的時候,會在頭部顯示如下的信息:
sysbench 1.1.0 (using bundled LuaJIT2.1.0-beta3)
這句話信息量很大,我們可以慢慢分析,可以明顯看到sysbench匹配的這個Lua是選用了LuaJIT,是一個beta版本。而如此一來,我們就需要確認(rèn)兩點,一個是Lua調(diào)用c的方法,在這里使用了LuaJIT,那么應(yīng)該是使用ffi庫來調(diào)用c了,否則一般是使用c的Lua C API這種方式。
這個信息可以在sysbench基礎(chǔ)的lua文件中看到如下的內(nèi)容印證。
local ffi = require("ffi")
接著第二個問題,系統(tǒng)層面是默認(rèn)安裝了Lua,基本上是5.1以上的版本,但是LuaJIT我們印象中是不曾安裝過。安裝sysbench的時候是否又安裝了LuaJIT呢?我們使用find來簡單驗證一下,果然是默認(rèn)安裝了。
這是這個地方的引用是sysbench在腳本中綁定的路徑,沒有放到系統(tǒng)級的環(huán)境變量中。LuaJIT里調(diào)用c還是很流暢的,比如可以寫一個簡單的腳本,如下:
該例子參考了網(wǎng)絡(luò)資源,執(zhí)行結(jié)果如下:
然后我們就可以暫時先來系統(tǒng)的學(xué)習(xí)一下Lua,然后抓住要點之后再來看sysbench的代碼就會容易多了。
先來一個最簡單的Hello World
> print("Hello World!")
Hello World!
> print 'hello world'
hello world
Lua中的保留字有下面的這些:
and break do else
elseif end false for
function if in local
nil not or repeat
return then true until
while
如果要添加注釋,有單行和多行,多行可以使用--[[ xxx --]]的方式來標(biāo)注。
> -- this is a test comment --單行注釋
> --[[ --多行注釋
>> this is a test,line 1
>> this is a test comment line 2
>> this is a test comment line 3
>> --]]
如果變量b沒有賦值,就會顯示為nil,我們可以基于這個方式來處理一下變量值。
> print (b)
nil
> b=10
> print b --這種命名方式是不達標(biāo)的
stdin:1: '=' expected near 'b'
> print(b)
10
然后就開始逐步有難度了。
我們看看學(xué)習(xí)套路之?dāng)?shù)據(jù)類型, Lua中有8個基本類型分別為:nil、boolean、number、string、userdata、function、thread和table。
要驗證還是比較容易的,使用type方法即可。
> print (type('hello world'))
string
> print (type(10+3))
number
> print (type(print))
function
> print (type(type))
function
> print (type(nil))
nil
> print (type(true))
boolean
> print (type(type(x)))
string
遍歷元組
如果有鍵值對這種形式的數(shù)據(jù),可以通過循環(huán)映射的方式來返回,下面的兩個實例,邏輯看起來是一樣的,最后的輸出還是有較大的差別。
> tab1 = {key1='val1',key2='val2','val3'}
> for k,v in pairs(tab1) do
>> print(k.."-"..v)
>> end
1-val3
key1-val1
key2-val2
> tab1 = {key1='val1',key2='val2',key3='val3'}
> for k,v in pairs(tab1) do
print(k.."-"..v)
end
key1-val1
key3-val3
key2-val2
關(guān)于類型轉(zhuǎn)換,是在程序中很常見的一類處理方式,數(shù)值轉(zhuǎn)換為字符型,或者字符型轉(zhuǎn)換為數(shù)字,這一點上Lua的表現(xiàn)還不錯。
> print("2" + 6)
8
> print('2' + 6)
8
>
> print ("2"+"6")
8
> print ("2+6")
2+6
> print ("-2e2"*"6")
-1200
> print ("error"+1)
stdin:1: attempt to perform arithmetic on a string value
stack traceback:
stdin:1: in main chunk
[C]: ?
>
> print ("a".."b")
ab
> print(123..456)
stdin:1: malformed number near '123..456'
> print(123 .. 456)
123456
如果要計算字符的長度,可使用len方法或者變量的方式。
> len = "www.jeanron100.com"
> print(#len)
18
> print(#"www.jeanron100.com")
18
如果要初始化table,則可以使用如下的方式:
比如聲明這樣一個table a,然后賦值取值做數(shù)據(jù)處理,里面比較重要的就是下標(biāo)的處理了,Lua的實現(xiàn)下標(biāo)是從1開始。
> a = {}
> a["key"] = "value"
> key=10
> a[key]=100
> a[key]=a[key]+1000
> for k,v in pairs(a) do
>> print(k .. ":" .. v)
>> end
key:value
10:1100
如果要強化一下循環(huán)的部分,可以參考下面的例子,把fruits里的元素都循環(huán)輸出。
[root@oel641 lua]# cat test1.lua
local fruits={'apple','orange','banana'}
for key,val in pairs(fruits) do
print("key",key)
end
[root@oel641 lua]# lua test1.lua
key 1
key 2
key 3
還有Lua中的函數(shù),甚至支持匿名函數(shù)。
[root@oel641 lua]# cat test3.lua
function factorial1(n)
if n == 0 then
return 1
else
return n * factorial1(n-1)
end
end
print (factorial1(5))
factorial2=factorial1
print(factorial2(5))
這段代碼和c非常相似,但是Lua里面比較有意思,函數(shù)可以更加靈活的使用,直接通過類似賦值的方式就搞定了,輸出結(jié)果如下:
[root@oel641 lua]# lua test3.lua
120
120
到此,相信大家對“sysbench怎么用”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!