簡體   English   中英

字符串引用

[英]String referencing

在我的代碼中,我需要在本地跟蹤某個值(字符串,總是......)。 我想知道運行時是否會在將其放入本地的Lua 5.3官方實現后重新創建檢查此字符串。 有任何想法嗎? 在這個lua.org 文檔中,我至少聽說過Lua實現的字符串內化(保留任何字符串的單個副本)。

我正在重新啟動我的代碼,所以到目前為止我做了一些微不足道的事情。 我可以根據功能做的一個例子是:

local src = l[1]

-- `src` would hold a string

如果字符串是否實際上並不是一個問題 - 字符串實習只是一種加速字符串比較的機制,並且(可能)以創建字符串所需的CPU為代價來節省一些內存。

重要的是lua中的字符串通常稱為reference types 也就是說,運行時值僅保存並共享對字符串的引用,並將字符串分配給運行時值只是復制指針並為此值設置正確的標記。

您的代碼所做的另一件事是,它允許您在執行函數期間避免多次哈希查找。 例如,

local a       = tbl['mykey']
-- ...
local other_a = tbl['mykey']

將導致兩個哈希查找,而

local cached_a = tbl['mykey']
-- ...
local a = cached_a
-- ...
local other_a = cached_a

將它減少到一個查找。 但是,對於整數鍵,這通常不是什么大問題。 但有時甚至整數鍵觸發哈希查找,即使它們很小。 此外,它依賴於實現。 Lua非常簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM