国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Lua - Lua性能優化技巧(四):關于字符串

Lua性能優化技巧(四):關于字符串

2020-04-22 10:38腳本之家 Lua

這篇文章主要介紹了Lua性能優化技巧(四):關于字符串,本文講解了關于字符串的一些優化技巧,需要的朋友可以參考下

與表類似,了解Lua如何實現字符串可以讓你更高效地使用它。

Lua實現字符串的方式與多數其他腳本語言所采用的兩種主要方式都不相同。首先,Lua中的所有字符串都是內部化[1]的,這意味著Lua維護著任何字符串的一個單一拷貝。當一個新字符串出現時,Lua檢查是否有現成的拷貝,如果有的話,重用之。內部化使得諸如字符串對比和索引表之類的操作非常快速,但是會降低創建字符串的速度。

第二,Lua中的變量從不存儲字符串,只是引用它們。這種實現方式可以加快很多字符串操作,例如在Perl中,當你寫類似于$x=$y的代碼、$y是一個字符串時,賦值操作會將字符串的內容從$y的緩沖區復制到$x的緩沖區。如果這個字符串很長,這個操作的開銷就很大。而在Lua中,這個賦值僅僅是一次指針的復制。

然而,這種引用實現會降低特定方式的字符串連接的速度。在Perl中,操作$s = $s . "x"和$s .= "x"區別非常大,對于前者,你獲得了$s的一個拷貝,并且追加"x"到它的尾部;而對于后者,"x"只是簡單地被追加到$s所維護的內部緩沖區的尾部。因此,后者無關于字符串的長度(假設緩沖區足夠放下追加的文本)。如果把這兩句代碼放進循環里,它們的區別就是線性和二次算法的區別。例如,下述循環需要大約五分鐘來讀取一個5MB的文件:

復制代碼 代碼如下:

$x = "";
while (<>)
{
    $x = $x . $_;
}


如果我們把

復制代碼 代碼如下:

$x = $x . $_


改為

復制代碼 代碼如下:

$x .= $_


耗時將會降低為0.1秒!

 

Lua沒有提供第二種,也就是更快速的方式,因為它的變量沒有內部緩沖區。因此,我們需要一個顯式的緩沖區:一個包含字符串片段的表來完成這項工作。下面的循環讀取相同的5MB的文件,需要0.28秒,雖然沒有Perl那么快,也還算不錯:

復制代碼 代碼如下:

local t = {}
for line in io.lines() do
    t[#t + 1] = line
end
s = table.concat(t, "\n")

 

[1] 內部化,原文internalize

延伸 · 閱讀

精彩推薦
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • LuaLua中計算、執行字符串中Lua代碼的方法

    Lua中計算、執行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執行字符串中Lua代碼的方法,類似JavaScript中eval函數的功能,在Lua中也可以實現,需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • LuaLua中table庫函數方法介紹

    Lua中table庫函數方法介紹

    這篇文章主要介紹了Lua中table庫函數方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua實現__add方法重載示例

    Lua實現__add方法重載示例

    這篇文章主要介紹了Lua實現__add方法重載示例,本文直接給出實現代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監控賦值、通過table給另一個table賦值等內容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua教程(二):基礎知識、類型與值介紹

    Lua教程(二):基礎知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎知識、類型與值介紹,本文講解了Hello World程序、代碼規范、全局變量、類型與值等內容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美午夜一区二区三区免费大片 | 黄色福利视频 | 日韩欧美一区二区三区久久婷婷 | 日韩在线不卡 | 97精品国产97久久久久久粉红 | 久久成人国产精品 | 国产精品suv一区二区 | 日韩免费av | 日韩av成人在线观看 | 午夜激情视频在线 | 天堂一区二区三区在线 | 国产精品一级 | 成人av小说| 一区二区不卡视频 | 日本伊人网| 日本午夜精品 | 中文字幕1区 | 欧美性猛片aaaaaaa做受 | 亚洲国产精品一区二区三区 | 91精品福利| 免费成人av网站 | 久久国 | 在线亚洲精品 | 中文字幕在线免费视频 | 久久大伊人 | 免费看一级电影 | 偷拍一区二区三区四区 | 日韩成人在线视频 | 99国产精品99久久久久久 | av成人免费 | 国产综合亚洲精品一区二 | 国产精品自产拍在线观看桃花 | 一区二区精品视频 | 欧美成人一区二区三区片免费 | 另类国产ts人妖高潮系列视频 | 国产精品久久久久久久久 | 在线观看一区二区三区四区 | 精品免费在线 | 黄色片子免费观看 | 国外成人在线视频网站 | 欧美日韩视频在线 |