gon1332 Δημοσ. 17 Μαρτίου 2014 Δημοσ. 17 Μαρτίου 2014 Έχω παρατηρήσει μείωση του χρόνου εκτέλεσης προγραμμάτων με τη χρήση -g, ενώ περίμενα ο χρόνος να αυξάνεται. Η μείωση είναι της τάξης των 3~4cs. Αρκετά μεγάλη διαφορά για ένα μικρό πρόγραμμα. Εκτέλεσα αρκετές φορές τα πειράματα πριν σιγουρευτώ ότι κάτι παίζει. Επίσης έψαξα και στο GNU GCC manual: -g Produce debugging information in the operating system's native format (stabs, COFF, XCOFF, or DWARF). GDB can work with this debugging information. On most systems that use stabs format, -g enables use of extra debugging information that only GDB can use; this extra information makes debugging work better in GDB but will probably make other debuggers crash or refuse to read the program. If you want to control for certain whether to generate the extra information, use -gstabs+, -gstabs, -gxcoff+, -gxcoff, or -gvms (see below). Unlike most other C compilers, GCC allows you to use -g with -O. The shortcuts taken by optimized code may occasionally produce surprising results: some variables you declared may not exist at all; flow of control may briefly move where you did not expect it; some statements may not be executed because they compute constant results or their values were already at hand; some statements may execute in different places because they were moved out of loops. Nevertheless it proves possible to debug optimized output. This makes it reasonable to use the optimizer for programs that might have bugs. The following options are useful when GCC is generated with the capability for more than one debugging format. αλλά δε βρήκα κάτι. Κάποιος είχε το ίδιο/παρόμοιο ερώτημα με μένα στο stackoverflow, αλλά και πάλι δε μου δόθηκε μία ικανοποιητική απάντηση (απ' ότι φαίνεται ούτε και στον OP όπως φαίνεται στα σχόλια). Τι μπορεί να συμβαίνει;
παπι Δημοσ. 17 Μαρτίου 2014 Δημοσ. 17 Μαρτίου 2014 Ειναι υπερβολικα σχετικο. Εμενα μου εχει τυχει να ειναι και 100 φορες πιο αργο
gon1332 Δημοσ. 17 Μαρτίου 2014 Μέλος Δημοσ. 17 Μαρτίου 2014 Ειναι υπερβολικα σχετικο. Εμενα μου εχει τυχει να ειναι και 100 φορες πιο αργο Καλά ναι. Αυτό περίμενα κι εγώ. Να είναι πιο αργό. Απλά βγήκε πιο γρήγορο. Εντάξει να έβγαινε το ίδιο..οκ να το δεκτώ. Υποτίθεται φορτώνουμε το εκτελέσιμο με debugging σύμβολα. Αυτό δε μπόρεσα να καταλάβω.
παπι Δημοσ. 17 Μαρτίου 2014 Δημοσ. 17 Μαρτίου 2014 gcc δεν ξερω, αλλα στο msvc το debug βγαινει χωρις optimization
gon1332 Δημοσ. 17 Μαρτίου 2014 Μέλος Δημοσ. 17 Μαρτίου 2014 gcc δεν ξερω, αλλα στο msvc το debug βγαινει χωρις optimization Υποτίθεται και ο gcc δεν κάνει optimizations με το debugging. Τέλος πάντων. Τα παράξενα της φύσης (;;; )
ChRis6 Δημοσ. 17 Μαρτίου 2014 Δημοσ. 17 Μαρτίου 2014 To -g δεν έχει σχέση με τη βελτιστοποίηση....Απλά προσθέτει ο compiler πληροφορία έτσι ώστε όταν θες να κάνεις debug ή profile να καταλαβαίνεις τι σου γίνεται.Μπορείς να βάλεις -g και -O μαζί αλλά τότε δεν θα υπάρχει ακριβής αναπαράσταση source - εκτελέσιμο,όπως λέει και η παράθεση σου
gon1332 Δημοσ. 17 Μαρτίου 2014 Μέλος Δημοσ. 17 Μαρτίου 2014 To -g δεν έχει σχέση με τη βελτιστοποίηση....Απλά προσθέτει ο compiler πληροφορία έτσι ώστε όταν θες να κάνεις debug ή profile να καταλαβαίνεις τι σου γίνεται. Μπορείς να βάλεις -g και -O μαζί αλλά τότε δεν θα υπάρχει ακριβής αναπαράσταση source - εκτελέσιμο,όπως λέει και η παράθεση σου Σωστά! Γι' αυτόν ακριβώς το λόγο ("το -g δεν έχει σχέση με τη βελτιστοποίηση") ξαφνιάστηκα που ο χρόνος μειώθηκε αντί να παραμείνει ίδιος ή να αυξηθεί.
Dark_Sage Δημοσ. 19 Μαρτίου 2014 Δημοσ. 19 Μαρτίου 2014 Δοκίμασε το παρακάτω πιστά και πες μας αποτελέσματα: Κάνε restart pc, τρέξε το προγραμμα χωρις -g flag, σημείωσε αποτέλεσμα απο την πρώτη εκτέλεση Κάνε restart pc, τρέξε το προγραμμα με -g flag, σημείωσε αποτέλεσμα απο την πρώτη εκτέλεση Πιστεύω θα έχεις τα ίδια αποτελέσματα.
gon1332 Δημοσ. 19 Μαρτίου 2014 Μέλος Δημοσ. 19 Μαρτίου 2014 Δοκίμασε το παρακάτω πιστά και πες μας αποτελέσματα: Κάνε restart pc, τρέξε το προγραμμα χωρις -g flag, σημείωσε αποτέλεσμα απο την πρώτη εκτέλεση Κάνε restart pc, τρέξε το προγραμμα με -g flag, σημείωσε αποτέλεσμα απο την πρώτη εκτέλεση Πιστεύω θα έχεις τα ίδια αποτελέσματα. Είναι αδύνατον να το κάνω αυτό στο ίδιο σύστημα γιατί δουλεύω απομακρυσμένα και επιπρόσθετα δεν έχω δικαιώματα. Κάποια στιγμή αύριο θα δημιουργήσω ένα προγραμματάκι για το σύστημά μου και θα σας πω τα αποτελέσματα. Αλλά τι νόημα έχουν οι πρώτες εκτελέσεις; Συνήθως οι πρώτες εκτελέσεις είναι ακραίες περιπτώσεις (cold misses κ.α.) και τα αποτελέσματά τους δε μας λένε κάτι για τη συνολική εικόνα ενός προγράμματος. Θα το κάνω. Κι εγώ πιστεύω ότι πάνω κάτω τα ίδια αποτελέσματα θα πάρω. Αδυνατώ όμως να εντοπίσω το σημείο σου.
gon1332 Δημοσ. 19 Μαρτίου 2014 Μέλος Δημοσ. 19 Μαρτίου 2014 Δοκίμασε το παρακάτω πιστά και πες μας αποτελέσματα: Κάνε restart pc, τρέξε το προγραμμα χωρις -g flag, σημείωσε αποτέλεσμα απο την πρώτη εκτέλεση Κάνε restart pc, τρέξε το προγραμμα με -g flag, σημείωσε αποτέλεσμα απο την πρώτη εκτέλεση Πιστεύω θα έχεις τα ίδια αποτελέσματα. Δοκίμασα ένα πρόγραμμα με loop αρκετών επαναλήψεων και κλήσεις συναρτήσεων. Τα αποτελέσματα ήταν αναμενόμενα. Με debugging option τα πράγματα είναι χειρότερα. (Η χρονομέτρηση έγινε με clock_gettime().) Καμιά έκπληξη εδώ. Σε εκείνο όμως το συγκεκριμένο πρόβλημα τα πράγματα ήταν καλύτερα με debugging symbols. Μπορεί να επηρεάζει κάποιο συγκεκριμένο αριθμό σχημάτων. (Μπορεί και όχι)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα