Coding day
Χτες ήταν μέρα coding για ακόμη μια φορά. Αυτή τη φορά σε c++ και για το Eternity2. Ο κώδικας είχε γραφεί εδώ και μέρες αλλά η τελική πινελιά που επέτρεπε την δοκιμή του γράφτηκε χτες. Συνεχόμενα καθήσαμε από τις 9 περίπου ως τις 12 και κάτι το βράδυ αλλά όλο αυτό ταυτόχρονα χρησιμοποιώντας το Gobby, svn και Visual Studio. Εγώ συνέχισα και πέρα από την ώρα εκείνη βέβαια ως τις 2 και κάτι το πρωί αλλά ήταν η πόρωση που δεν με άφηνε να κοιμηθώ. Ο Κώστας ούτως ή άλλως δούλευε το πρωί οπότε δεν είχε νόημα να καθίσει κι άλλο.
Πάντως ο επιπλέον χρόνος που ασχολήθηκα είχε νόημα. Τώρα, με ελάχιστες βελτιώσεις ο κώδικας εκτελεί 1.000.000 ελέγχους σε 6 δευτερόλεπτα περίπου (τουλάχιστον στον 4400X2 μου). Μια σημαντική βελτίωση από τις 10000 περίπου σε 6 δευτερόλεπτα που είχα παρατηρήσει προηγουμένως. Ήδη ο αλγόριθμος (για brute force) είναι αρκετά βελτιστοποιημένος κάνοντας τους απόλυτα αναγκαίους ελέγχους. Είμαι σίγουρος όμως πως μπορούμε να κόψουμε λίγο δρόμο ακόμη χρησιμοποιώντας κάποιες παραδοχές ακόμη και στο τέλος κόβωντας μερικές κλήσεις σε αντίστοιχες μεθόδους.
Κάποια στιγμή όμως θέλω να δοκιμάσω και εναλλακτικές προσεγγίσεις κάνοντας μικρές τροποποιήσεις χρησιμοποιώντας κάποια lookups αντί για υπολογισμούς σε κάθε κύκλο. Ευελπιστώ πως θα υπάρξει τρόπος για επιπλέον σημαντική βελτίωση.
Ένα επίσης μελανό σημείο είναι πως το εκτελέσιμο ούτε τρέχει στο 2ο core αλλά ούτε και χρησιμοποιεί 100% του ενός επεξεργαστή. Βρίσκεται συνέχεια γύρω στο 50%. Θέλω να πιστεύω πως τα πολλαπλά branch instructions (if’s) είναι ο λόγος. Βέβαια χωρίς τα if δεν γίνεται δουλειά οπότε θέλει προσοχή.
Related posts:


No Comments Κανάλι σχολίων
Add a Comment
You must be logged in to post a comment.