Optimization (ITS8020)

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Optimization of a program


Write a program which will read a file and outputs its statistics.

  • For a "standard" input file with random content, please run:
dd if=/dev/urandom of=random_file count=1048576 bs=1
  • The output of the program should be 256 human-readable lines of ASCII numbers, which represent the content of the file. The first line should contain the number of occurences of byte with a value of 0x0 (or binary zero) in the file and the last line the number of occurences of byte with value 0xff (or 255 in decimal).
  • Measure the running time of the program with:
time programname


  • Does the loop unrolling trick work?
  • Perhaps it is possible to use parallel programming or threads?
  • Does compilation optimization with -O work?
  • Can you replace printf with something faster that you write yourself?
  • Perhaps the keyword inline can be used.
  • (Sadly mmap for file reading fails in dijkstra) Can you speed up the reading of the file with mmap()?

Example code for base program

#include <stdlib.h>
#include <stdio.h>

long int stats[256];

int main() {
        int i, c;
       FILE * f; 

        f = fopen("random_file", "r");
        if(f == NULL) {

        while((c = fgetc(f)) != EOF) {

        for(i = 0; i < 255; i++) {
                printf("%ld\n", stats[i]);