Exponential time to parse if-else-if [message #1808913] |
Thu, 04 July 2019 12:41 |
Nicola Serreli Messages: 26 Registered: July 2009 |
Junior Member |
|
|
Hi,
I'm writing an eol code with a lot of "if else if ", and after a while, it looks like every time I add a new "else if", the parsing time doubles.
Here is an example. The java code is just
(new EolModule()).parse(uri);
where the uri points to a file containing :
operation getOsTreeSubObjects(root) {
var result = Sequence {};
if(result.isEmpty()) { result = Sequence{}; } // 1
else if(result.isEmpty()) { result = Sequence{}; } // 2
else if(result.isEmpty()) { result = Sequence{}; } // 3
else if(result.isEmpty()) { result = Sequence{}; } // 4
else if(result.isEmpty()) { result = Sequence{}; } // 5
else if(result.isEmpty()) { result = Sequence{}; } // 6
else if(result.isEmpty()) { result = Sequence{}; } // 7
else if(result.isEmpty()) { result = Sequence{}; } // 8
else if(result.isEmpty()) { result = Sequence{}; } // 9
else if(result.isEmpty()) { result = Sequence{}; } // 10
else if(result.isEmpty()) { result = Sequence{}; } // 11
else if(result.isEmpty()) { result = Sequence{}; } // 12
else if(result.isEmpty()) { result = Sequence{}; } // 13
else if(result.isEmpty()) { result = Sequence{}; } // 14
// else if(result.isEmpty()) { result = Sequence{}; } // 15 -> 0.2 sec
// else if(result.isEmpty()) { result = Sequence{}; } // 16 -> 0.4 sec
// else if(result.isEmpty()) { result = Sequence{}; } // 17 -> 0.7 sec
// else if(result.isEmpty()) { result = Sequence{}; } // 18 -> 1.5 sec
// else if(result.isEmpty()) { result = Sequence{}; } // 19 -> 3.1 sec
return result;
}
As stated in the code, it tooks about 0.2 seconds to parse 15 "if", 0.4 seconds for 16 "if", and so on, doubling every time I add a new "if".
Is this an issue/bug?
Currently I resolved it removing all "else" and placing the "return" inside every if
Best regards,
Nicola
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03080 seconds