Associated rule title
AvoidMultipleIfElseStatement : do not use multiple if, else if, else statements
Associated rule link
https://github.com/green-code-initiative/ecoCode/blob/main/ecocode-rules-specifications/src/main/rules/EC2/php/EC2.asciidoc
Language and platform
Language PHP
Platform : Lenovo T570
CPU : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (x86_64)
RAM : 2133 MHz - 8GB
Measure justification
Using VJoule and 100000 runs on two samples (a good one and a bad one), here are the results :
Processing rule EC2 - language php
----------------------
RUNNING vjoule
TESTING good CASE
time 70ms673µs
PDU 0.00 J
CPU 0.46 J
RAM 0.04 J
GPU 0.00 J
----------------------
RUNNING vjoule
TESTING bad CASE
time 111ms312µs
PDU 0.00 J
CPU 0.79 J
RAM 0.05 J
GPU 0.00 J
----------------------
Validation
The measurement performed validates.
The percentage of certainty of this validation 95%, it is simple to reproduce using samples such as these ones :
/* GOOD PHP CASE */
<?php
function main() {
$i = 15;
$res = 0;
switch ($i) {
case 0:
$res = 1;
break;
case 1:
$res = 2;
break;
case 2:
$res = 3;
break;
case 3:
$res = 4;
break;
case 4:
$res = 5;
break;
case 5:
$res = 6;
break;
case 6:
$res = 7;
break;
case 7:
$res = 8;
break;
case 8:
$res = 9;
break;
case 9:
$res = 10;
break;
case 10:
$res = 11;
break;
case 11:
$res = 12;
break;
case 12:
$res = 13;
break;
case 13:
$res = 14;
break;
case 14:
$res = 15;
break;
case 15:
$res = 16;
break;
}
return $res;
}
for ($i = 1; $i <= 1000000; $i++) {
main();
}
?>
/* BAD PHP CASE */
<?php
function main() {
$i = 15;
$res = 0;
if ($i == 0) {
$res = 1;
} elseif ($i == 1) {
$res = 2;
} elseif ($i == 2) {
$res = 3;
} elseif ($i == 3) {
$res = 4;
} elseif ($i == 4) {
$res = 5;
} elseif ($i == 5) {
$res = 6;
} elseif ($i == 6) {
$res = 7;
} elseif ($i == 7) {
$res = 8;
} elseif ($i == 8) {
$res = 9;
} elseif ($i == 9) {
$res = 10;
} elseif ($i == 10) {
$res = 11;
} elseif ($i == 11) {
$res = 12;
} elseif ($i == 12) {
$res = 13;
} elseif ($i == 13) {
$res = 14;
} elseif ($i == 14) {
$res = 15;
} elseif ($i == 15) {
$res = 16;
} else {
$res = 17;
}
return $res;
}
for ($i = 1; $i <= 1000000; $i++) {
main();
}
?>
Associated rule title
AvoidMultipleIfElseStatement : do not use multiple if, else if, else statements
Associated rule link
https://github.com/green-code-initiative/ecoCode/blob/main/ecocode-rules-specifications/src/main/rules/EC2/php/EC2.asciidoc
Language and platform
Language PHP
Platform : Lenovo T570
CPU : Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (x86_64)
RAM : 2133 MHz - 8GB
Measure justification
Using VJoule and 100000 runs on two samples (a good one and a bad one), here are the results :
Validation
The measurement performed
validates.The percentage of certainty of this validation 95%, it is simple to reproduce using samples such as these ones :