目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7089.4k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(307)
赞(0)

3 Table

table 也是性能的拦路虎

3.1 尽量复用,避免不必要的 table 创建。

你先记住这一点,下面,我们就从 table 的创建、元素的插入、清空、循环使用等方面,分别来介绍相关的优化。

第一步,自然是创建数组。在 Lua 中,我们创建数组的方式很简单:

上面这行代码,就创建了一个空数组;当然,你也可以在创建的时候,就加上初始化的数据:

不过,第二种写法对于性能的损失比较大,原因在于每次新增和删除数组元素的时候,都会涉及到数组的空间分配、resizerehash

3.2 自己计算 table 下标

有了 table 对象之后,下一步就是向它里面增加元素了。最直接的方法,就是调用 table.insert 这个函数来插入元素

或者是先获取当前数组的长度,通过下标的方式来插入元素:

这一点又该如何解决呢?让我们看下 lua-resty-redis 这个官方的库是如何做的吧:

3.3 循环使用单个 table

既然 table 这么来之不易,我们自然要好好珍惜,尽量做到重复使用。不过,循环利用也是有条件的。我们先要把 table 中原有的数据清理干净,以免对下一个使用者造成污染。

这时,table.clear 函数就派上用场了。从它的名字你就能看出它的作用,它会把数组中的所有数据清空,但数组的大小不会变。也就是说,你用 table.new(narray, nhash) 生了一个长度为 100 的数组,clear 后,长度还是 100。

为了让你能够更清楚它的实现,下面我给出了一个代码示例,它兼容了标准 Lua:

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2