Lua判斷字符串前綴是否為指定字符的3種方法
在寫 lua debugger 的時(shí)候,我需要判斷一個(gè)字符串的前綴是不是 "@" 。
有三個(gè)方案:
1.比較直觀的是 string.sub(str,1,1) == "@"
2.感覺效率比較高的是 string.byte(str) == 64
3.或者是 string.find(str,"@") == 1
我推薦第三種。(注:在此特定運(yùn)用環(huán)境下。因?yàn)橛糜谂卸?source 的文件名,大多數(shù)情況都是 @ 開頭。如果結(jié)果為非,則性能較低)
第一方案 string.sub 會(huì)在生成子串的時(shí)候做一次字符串 hash ,感覺效率會(huì)略微低一些。
第二方案效率應(yīng)該是最好,但是需要記住 @ 的 ascii 碼 64 。如果前綴是多個(gè)字符也不適用。
性能對(duì)比測(cè)試:
string.find(sb, "@") == 1 3.671
string.find(sb, "^@") ~= 1 3.735
string.byte(sa) == 64 2.14
string.char(string.byte(sb)) == "@" 4.375
string.sub(sb,1,1) == "@" 2.766
sb[1] == "@" 0.984
要想解決不以@開頭時(shí)的性能問題,可以改成這樣:
string.find(str,"^@") == 1
相關(guān)文章
Lua的table庫(kù)函數(shù)insert、remove、concat、sort詳細(xì)介紹
這篇文章主要介紹了Lua的table庫(kù)函數(shù)insert、remove、concat、sort詳細(xì)介紹,本文分別給出了這幾個(gè)函數(shù)的使用實(shí)例,需要的朋友可以參考下2015-04-04Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量)
這篇文章主要介紹了Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量),使用本文方法可以實(shí)現(xiàn)避免創(chuàng)建全局變量,在必須使用全局變量的情況下也給出了實(shí)現(xiàn)技巧,需要的朋友可以參考下2014-12-12Lua中__index和__newindex之間的沉默與合作
這篇文章主要介紹了Lua中__index和__newindex之間的沉默與合作,本文著重講解了__index和__newindex之間的聯(lián)系,需要的朋友可以參考下2014-09-09Mac平臺(tái)中編譯安裝Lua運(yùn)行環(huán)境及Hello Lua實(shí)例
這篇文章主要介紹了Mac平臺(tái)中編譯安裝Lua運(yùn)行環(huán)境及Hello Lua實(shí)例,本文給出了兩種Hello Lua示例,一種是控制臺(tái)直接輸出,通過文件編譯輸出,需要的朋友可以參考下2014-10-10