Δημοσιεύτηκε: 19 Φεβ 2011, 13:19
από simosx
M.Jackson έγραψε:
δεν είπα να τα αποφύγει κάποιος αλλά να προσπαθεί να λύνει το πρόβλημα αν είναι δυνατό χωρίς functions, δεν το διατύπωσα σωστά.
Είναι γεγονός ότι τα functions καθυστερούν τα προγράμματα. Συμφωνώ αν χρειαστεί π.χ να βρεις το max σε 5 περιπτώσεις λογικό είναι να φτιάξεις ένα function και να το καλείς κάθε φορά, αλλά αν είναι 1 φορά τότε δεν υπάρχει λόγος :)


Είναι καλό να φτιάχνεις συναρτήσεις, ακόμα και για κάτι σαν το max(). Είναι καλό, διότι με αυτό το τρόπο θα γίνει συνήθεια.

Καθυστερεί πάρα πολύ το πρόγραμμα αν κάτι είναι σε συνάρτηση; Δεν υπάρχει τέτοια καθυστέρηση που να δημιουργεί πρόβλημα. Και η πιθανή καθυστέρηση θα είχε νόημα όταν καλείς τη συνάρτηση αυτή χιλιάδες φορές. Η απάντηση που είναι να δοθεί εδώ είναι η ίδια απάντηση στο ερώτημα «Να γράψω σε Assembly αντί σε C ώστε το πρόγραμμα μου να είναι ταχύτερο;». Η απλή απάντηση είναι ότι το κέρδος σε ταχύτητα είναι αμελητέο σε σχέση με τη δυσκολία που προσθέτεις με το να γράφεις το πρόγραμμα σε ακαταλαβίστικο τρόπο. Είναι τρομερά δύσκολο να γράψεις ένα σημαντικό πρόγραμμα με κάποιο μέγεθος σε γλώσσα assembly ή όταν προσπαθείς να αποφύγεις τις συναρτήσεις.

Και η απάντηση στο ερώτημά σου, για τις μικρές συναρτήσεις όπως min/max, τις γράφεις ως π.χ.
Κώδικας: Επιλογή όλων

static int inline max(int a, int b)
{
...
}

Περισσότερα στο http://gcc.gnu.org/onlinedocs/gcc/Inline.html