操作数

操作数

> LeekScript 教程

AI 里执行的每一次计算,服务器都需要花一定的时间来完成。这个执行时间用一个数字来估算:这次计算所用的操作数。

AI 在一个回合内能用的操作数有上限(你的韭葱每拥有 1 个核心,就有 100 万次操作)。好在你可以用函数 getOperations 获取 AI 在当前回合已经用掉的操作数,用函数 getMaxOperations 获取操作数上限。

韭葱的召唤物和召唤者共用同一回合的上限(如果一根韭葱有 3 个核心,它的 AI 在某个回合用了 200 万次操作,那么它的召唤物最多只能再用 100 万次操作)。

下面是 AI 中各种操作的开销列表(几乎涵盖了全部):

代码 | 开销 -----|------ var a; | 1 var a = value; | 1 array[index] = value; | 3(push 为 2) map[key] = value; | 4

访问

代码 | 开销 -----|---- a | 0 fonction(params) | 1 + 函数本身的开销 array[index] | 1 map[key] | 2

运算符

当然,每次都还要加上 a 和 b 本身的开销。

代码 | 开销 -----|----- a = b | 1 a ++ | 1 a -- | 1 a + b | 1 a - b | 1 a * b | 2 a / b | 5 a \\ b | 5 a % b | 5 a ** b | 40 a += b | 1 a -= b | 1 a = b | 2 a /= b | 5 a \\= b | 5 a %= b | 5 a *= b | 40

比较运算符

代码 | 开销 -----|----- a == b | 1 a != b | 1 a > b | 1 a = b | 1 a > b | 1 a >>> b | 1 a >= b | 1 a <<= b | 1

面向对象

代码 | 开销 -----|----- class object { ... } | 0 new object(params) | 1 + 类的字段数 + 构造函数的开销 object.method(params) | 2 + 方法的开销 object.property | 1(仅在该对象的声明之外访问时)

关键字

代码 | 开销 -----|----- if(a) | 1(另加 a 的开销) a ? b : c | 1(另加 a、b、c 的开销) while(0) | 0 do {} while(0); | 1