Home » C programming language

C programming optimization techniques

In this article, I am writing some of the top/most useful C programming language optimization techniques that may help you to sharp your programming skills.
Submitted by IncludeHelp, on May 25, 2018



As we all know that C programming is a widely used and most popular programming language and it is general purpose programming language which is used to develop any type of applications like low level and high level.

So, if you are learning C programming language or if you are a C language programmer, you must read these C programming optimization techniques and use all given techniques to improve your programming skills.

C language optimization tips/techniques

1) main() function should be used properly by using return type and command line arguments.

Correct forms:

    int main(int argc, char* argv[])
    int main (int argc, char** argv)

Read: main() in c


2) Each variable should be declared in separate line, with sufficient spaces.

While declaring variables, remember two things

  1. Declare each variable in a separate line - it will help to put inline (single line comment after the variable declaration).
  2. Initialize variable with default values while declaration - it will help to prevent unpredictable behavior of the variable (variable may give unpredictable result if it is using without initialization).

There should be one tab space between data type, variable name and initialization (variable initialization) value.

Correct declaration:

int		height	=0;		//height of the object
int		weight	=0;		//width of the object 	
float		result	=0.0f;		//result of the expression 	
char		choice	='N';		//store user's choice

3) There is no need to use integer data type all time for small values.

There are other data types, which are used to store small integer values, see the below given table and use according to the variable range.

Data type Required memory Value range
char (signed char) 1 byte (8 bits) -128 to 127
unsigned char 1 byte (8 bits) 0 to 255
short (signed short) 2 bytes (16 bits) -32768 to 32767
unsigned short 2 bytes (16 bits) O to 65535

If a variable’s value is positive in all cases, you may use ‘unsigned’ with the data type, it ensure that only positive values will be stored.

For example: If you are going to declare a variable to store age of a person and we know that minimum age is 0 and maximum age is 100 or 150 (which, is not possible still we can consider maximum age is 150).

Then, the following declaration is correct for it,

    unsigned char   age =   0;

Note: for an unsigned type of variable, make sure its value must be zero or positive, if there is any negative value, value will be truncated.




4) Do not declare more global variables

Global variable’s scope is life time of the program that means if there is any variable declared in global scope it can be used in all functions and it will live till program’s execution.

Therefore, try to declare variables inside the function blocks; they will de-allocate/destroy when program’s execution leaves the function.


5) Use constant or macro to declare a static array.

If there are multiple declarations of arrays with the fixed values, it will hard to update/change (in future). We can use Macro or constant to declare an array.

Incorrect method:

int main()
{
	char	first_name	[100];
	char	second_name	[100];
	//...
}

Correct method 1:

#define	MAX_CHAR	100
int main()
{
	char	first_name	[MAX_CHAR];
	char	second_name	[MAX_CHAR];
	//...
}

Correct method 2:

const unsigned char	MAX_CHAR	= 100;

int main()
{
	char	first_name	[MAX_CHAR];
	char	second_name	[MAX_CHAR];
	//...
}



6) Use switch statement instead of if else to check integral values.

If you are writing code to check integral values (like integers, characters), it is recommended that you should use switch statement rather than if else statements.

In switch case statement program’s execution jumps to matched case and execute the statement written in that case.

While, in if else statement, each condition (one by one) is checked till the true condition.

Incorrect method:

if(choice == 1)
{
	//statements
}
else if(choice == 2)
{
	//statements
}
else if(choice == 3)
{
	//statements
}
...
else
{
	//default statement
}

Correct method:

switch(choice)
{
	case 1:
		//statements
		break;

	case 3:
		//statememts
		break;
	
	...
	
	default:
		//default statements
		[break;] //optional
}

In such cases, switch statements may fast.

How?

Let suppose, if last case (condition) required, if statement will reach there by checking all above conditions, while switch statement will directly jump to that case and execute the statements. Therefore, second method will be faster.


7) Conditions breakdown

If there are multiple conditions and you are checking them by using if else statement, you may break down them, by using parent and child conditions.

Consider the given example:

if(option == 1){
}
else if(option == 2){
}
else if(option == 3){
}
else if(option == 4){
}
else if(option == 5){
}
else if(option == 6){
}
else if(option == 7){
}

We can breakdown the conditions in multiple parts like,

if(option <= 4){
	if(option == 1){
	}
	else if(option == 2){
	}
	else if(option == 3){
	}
	else if(option == 4){
	}
}
else{ 
	else if(option == 5){
	}
	else if(option == 6){
	}
	else if(option == 7){
	}
}

In such case, conditions check will be less and program’s performance will be faster.

Read more...

I hope this post will help you to improve your programming skill, if you have any C programming optimization techniques, please write in the comment box.






Was this page helpful? YES NO

Are you a blogger? Join our Blogging forum.



Comments and Discussions





© https://www.includehelp.com (2015-2018), Some rights reserved.




close Like other websites, this site uses cookies to deliver relevant ads based on your interest, by using our website, you acknowledge that you have read our privacy policy.