WoW:USERAPI EraseTable: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
(Add note that hashes never shrink)
No edit summary
Line 1: Line 1:
{{userfunc}}
{{localuserfunc}}
__NOTOC__
__NOTOC__


Erases a table, often a good way to reduce garbage creation.  Note that erasing a table is generally more expensive than letting the GC system reclaim it, so one might prefer simply reallocating a new empty table. Also note that a hash (as opposed to a 1..n integer-index) will NEVER SHRINK. Each key you ever used will use ~40 bytes and keep doing so until the table is destroyed. If you re-use the same keys this is obviously a nonissue.
Erases a table, often a good way to reduce garbage creation.  Note that erasing a table can be more expensive than letting the GC system reclaim it, so one might prefer simply reallocating a new empty table. Also note that a hash (as opposed to a 1..n integer-index) will NEVER SHRINK. Each key you ever used will use ~40 bytes and keep doing so until the table is destroyed. If you re-use the same keys this is obviously a nonissue.
 
For more details on the inner workings of tables and when to reallocate vs when to erase, see [[Lua object memory sizes]] and it's [[Talk:Lua object memory sizes|talk page]].


  local function EraseTable(t)
  local function EraseTable(t)
  for i in pairs(t) do t[i] = nil end
  for i in pairs(t) do t[i] = nil end
  end
  end

Revision as of 20:20, 11 January 2008

Template:Localuserfunc


Erases a table, often a good way to reduce garbage creation. Note that erasing a table can be more expensive than letting the GC system reclaim it, so one might prefer simply reallocating a new empty table. Also note that a hash (as opposed to a 1..n integer-index) will NEVER SHRINK. Each key you ever used will use ~40 bytes and keep doing so until the table is destroyed. If you re-use the same keys this is obviously a nonissue.

For more details on the inner workings of tables and when to reallocate vs when to erase, see Lua object memory sizes and it's talk page.

local function EraseTable(t)
	for i in pairs(t) do t[i] = nil end
end