Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Is there a list somewhere that explains how to optimize?
#1
Hi

Is there a list somewhere that explains how to optimize?

i  explain

Normally in compilers if you put the code in one way it is more efficient than if you put the code in another way

For example you can do

variable ++    or   variable = variable + 1

or maybe if you use local variables it is more efficient than if you use global variables

perhaps the compiler translates with fewer bytes and more efficiently one way or another

Is there somewhere a recomended list of tricks to write a more efficient syntax that translates better to assembler

and uses less memory and fewer bytes?
Reply
#2
No, unfortunately there is not. You might search in this forum and might find some questions and answers.
The reason for this is people will go to write "Bad code" just for speed. The compiler goes better and better optimizing.

For example:
variable = variable + 1  will be internally converted to variable++ by the compiler.
Multiplying or dividing integer by powers of 2 will become << and >> internally.
etc...
There are still many optimizations pending to be implemented but they will eventually arrive.

Two tips:
If possible "cache" value in variables:

Code:
FOR i = 1 to a * x + 3
...
will be faster if you do:
Code:
LET last = a * x + 1
FOR i = 1 to last
...
[code]

SELECT CASE is not implemented, but you can use ELSEIF.
If you have something like:
[code]
IF a = 1 THEN
...
END IF
IF a = 2 THEN
...
END IF
IF a = 3 THEN
...
END IF
...
Change it to ELSEIF:
Code:
IF a = 1 THEN
...
ELSEIF a = 2 THEN
...
ELSEIF a = 3 THEN
...
ELSE
...
ENDIF

This is equivalent to a switch( ) (SELECT CASE) in other languages, and is faster.


Anyway if you find something running slow, just ask.
Reply
#3
(09-16-2021, 06:59 AM)boriel Wrote: No, unfortunately there is not. You might search in this forum and might find some questions and answers.
The reason for this is people will go to write "Bad code" just for speed. The compiler goes better and better optimizing.

For example:
variable = variable + 1  will be internally converted to variable++ by the compiler.
Multiplying or dividing integer by powers of 2 will become << and >> internally.
etc...
There are still many optimizations pending to be implemented but they will eventually arrive.

Two tips:
If possible "cache" value in variables:

Code:
FOR i = 1 to a * x + 3
...
will be faster if you do:
Code:
LET last = a * x + 1
FOR i = 1 to last
...
[code]

SELECT CASE is not implemented, but you can use ELSEIF.
If you have something like:
[code]
IF a = 1 THEN
...
END IF
IF a = 2 THEN
...
END IF
IF a = 3 THEN
...
END IF
...
Change it to ELSEIF:
Code:
IF a = 1 THEN
...
ELSEIF a = 2 THEN
...
ELSEIF a = 3 THEN
...
ELSE
...
ENDIF

This is equivalent to a switch( ) (SELECT CASE) in other languages, and is faster.


Anyway if you find something running slow, just ask.

Thanks

If we know how the compiler does better and fast things we will do better programs Smile

maybe you can use this post as library of tips for the compiler or create another post for this thing and just write it here any tip about the compiler as it arises in the forum This way will be more easy to found the compiler tricks
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)