Opérations

Opérations

> Tutoriel LeekScript

Tous les calculs effectués dans une ia nécessitent un certain temps pour pouvoir être exécutés par le serveur. Ce temps d'exécution est estimé par un nombre : le nombre d'opérations utilisées par ce calcul.

Une ia ne peut pas utiliser plus d'un certain nombre d'opérations en un tour (1 million par Coeur que possède votre poireau). Heureusement, le nombre d'opérations utilisées durant le tour actuel par une ia peut être obtenu grâce a la fonction getOperations, et le nombre d'opérations maximum avec la fonction getMaxOperations.

Les invocations d'un poireau sont soumises à la même limite que celle du tour de leur invocateur (si un poireau a 3 coeurs et son ia utilise 2 millions d'opérations à un tour donné, ses invocations pourront utiliser au maximum 1 million d'opérations).

Voici une liste (presque exhaustive) des coûts des différentes actions pouvant être faites dans une ia :

Code | Coût -----|------ var a; | 1 var a = value; | 1 array[index] = value; | 3 (push coûte 2) map[key] = value; | 4

Accès

Code | Coût -----|---- a | 0 fonction(params) | 1 + coût de la fonction array[index] | 1 map[key] | 2

Opérateurs

Il faut bien sûr ajouter le coût de a et b à chaque fois.

Code | Coût -----|----- 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

Opérateurs de comparaison

Code | Coût -----|----- a == b | 1 a != b | 1 a > b | 1 a = b | 1 a > b | 1 a >>> b | 1 a >= b | 1 a <<= b | 1

POO

Code | Coût -----|----- class object { ... } | 0 new object(params) | 1 + nombre de champs de la classe + coût du constructeur object.method(params) | 2 + coût de la méthode object.property | 1 (seulement si on est en dehors de la declaration de cet objet)

Mots-clé

Code | Coût -----|----- if(a) | 1 (Plus coût de a) a ? b : c | 1 (Plus coût de a, b et c) while(0) | 0 do {} while(0); | 1