Directx Δημοσ. 26 Δεκεμβρίου 2013 Δημοσ. 26 Δεκεμβρίου 2013 TL;DR: Η αποδοτική χρήση των πόρων του υπολογιστή είναι καλός μπούσουλας, αλλά είναι επικίνδυνη η αδιάκριτη χρήση του χωρίς να γνωρίζει κανείς τι μπαίνει στην άλλη μεριά της ζυγαριάς (ιδιαίτερα σήμερα που έχουμε τόσους πόρους που δεν είναι καν αστείο¹²). ¹ Το κινητό μου είναι μερικά εκατομμύρια φορές πιο γρήγορο από τον υπολογιστή όπου έμαθα προγραμματισμό και έχει εκατό χιλιάδες φορές περισσότερη RAM (είναι παλιό το καημένο, ένα καινούριο θα τα πήγαινε καλύτερα). Επίσης έχει > 100 φορές περισσότερη μνήμη και ισχύ από τον υπολογιστή όπου κάποτε έπαιζα first person shooters. Που τα έβλεπες και έτρεχαν τα σάλια. [...] Η κρίσιμη παράμετρος όταν γράφεις λογισμικό για κινητά τηλέφωνα σήμερα είναι από την εμπειρία μου α)η κατανάλωση της μπαταρίας, β)η ταχύτητα των αλγορίθμων σου (ειδικά αν γράφεις κώδικα Java [είτε Android είτε J2ME]) και γ)η διαθέσιμη μνήμη της συσκευής οπότε σε αυτές τις περιπτώσεις αναγκαστικά είσαι υποχρεωμένος να λάβεις υπόψη σου τους περιορισμούς της πλατφόρμας ακόμα και αν εκ πρώτης όψεως έχεις στην διάθεση σου μια CPU 1GHz+, μπόλικη μνήμη και μεγάλη μπαταρία. 1
migf1 Δημοσ. 26 Δεκεμβρίου 2013 Δημοσ. 26 Δεκεμβρίου 2013 Η έκρηξη της δημοτικότητας των κινητών έχει επαναφέρει στο προσκήνιο πολλές πρακτικές και τρόπους σκέψης που αφορούν τη βελτιστοποίηση για εξοικονόμηση πόρων, κάτι που προσωπικά με χαροποιεί. Ουδέποτε υπήρξα οπαδός του bloatware, αλλά το ανέχομαι αναγκαστικά αφού στα desktop τουλάχιστον έχει γίνει ο κανόνας (με μαμά την Microsoft). Και δεν είναι μόνο τα κίνητα που επωφελούνται από βελτιστοποίηση, είναι και το system programming, και το embedded programming, και το game programming, και το network programming, καθώς και όλο το λεγόμενο middleware. Το μόνο σίγουρο είναι πως η βελτιστοποίηση μόνο κακό δεν θα κάνει στον τελικό χρήστη και παράλληλα διευρύνει τις πιθανότητες να τρέχει το πρόγραμμα as intended σε περισσότερα "μηχανάκια" (ενίοτε και πλατφόρμες). Διευρύνει επίσης τις γνώσεις του προγραμματιστή, αφού τον αναγκάζει να εξοικειωθεί περισσότερο με τα εργαλεία που χρησιμοποιεί (γλώσσα, compiler, κλπ) με αποτέλεσμα να βάζει στο προγραμματιστικό του σακούλι ακόμα μια προσέγγιση επίλυσης προβλημάτων. Κατά τη γνώμη μου, πολύ καλά έκαναν και σας μίλησαν για βελτιστοποίηση στη σχολή σας! Απλώς έχει κι αυτή τις παγίδες της, και θέλει αρκετό ψάξιμο και πειραματισμούς. 1
defacer Δημοσ. 29 Δεκεμβρίου 2013 Δημοσ. 29 Δεκεμβρίου 2013 Η κρίσιμη παράμετρος όταν γράφεις λογισμικό για κινητά τηλέφωνα σήμερα είναι από την εμπειρία μου α)η κατανάλωση της μπαταρίας, β)η ταχύτητα των αλγορίθμων σου (ειδικά αν γράφεις κώδικα Java [είτε Android είτε J2ME]) και γ)η διαθέσιμη μνήμη της συσκευής οπότε σε αυτές τις περιπτώσεις αναγκαστικά είσαι υποχρεωμένος να λάβεις υπόψη σου τους περιορισμούς της πλατφόρμας ακόμα και αν εκ πρώτης όψεως έχεις στην διάθεση σου μια CPU 1GHz+, μπόλικη μνήμη και μεγάλη μπαταρία. Η μπαταρία σίγουρα όπως τα λες αλλά εδώ μιλούσαμε για C σε PC. Για τους αλγόριθμους η πάγια θέση μου είναι πως αν δεν είσαι CPU bound δεν έχει κανένα νόημα. Από την άλλη όπως λες οι αλγόριθμοι είναι το πιο σημαντικό πράγμα με αβυσσαλέα διαφορά όταν όντως είσαι CPU bound, οπότε συμπερασματικά ναι μεν πολλές φορές δεν παίζουν ιδιαίτερα σημαντικό ρόλο αλλά αν κοιμάσαι στο τιμόνι μετά γίνεται Τιτανικός. Για τη διαθέσιμη μνήμη... δεν είμαι σίγουρος (δεν έχω και καθόλου εμπειρία memory pressure σε Android). Γενικά σε πλατφόρμες όπου υπάρχει virtual memory δεν παίζει σχεδόν καθόλου ρόλο το πόση μνήμη χρειάζεται η εφαρμογή συνολικά παρά μόνο το πόσο είναι το working set της. Καλά τα λες δηλαδή, απλά σ' αυτά τα θέματα έχω πάντα ενστάσεις όταν η συμβουλή για optimization δε συνοδεύεται από το σχετικό αντίλογο. Είναι ένα θέμα στο οποίο θεωρώ ότι δεν υπάρχει best practice γιατί ακόμα και στις πιο απλές περιπτώσεις μπαίνουν πολλοί όροι στην εξίσωση.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα