M2000 Δημοσ. 20 Απριλίου 2016 Δημοσ. 20 Απριλίου 2016 Θελω να καταλάβει τι εννοεί ο OP ότι χρησιμοποιεί ξανά ό,τι γίνεται. Σκέφτομαι ότι ακόμα και αυτό μπορεί να μην είναι ότι φαίνεται, και ότι στην ουσία να δημιουργεί νέα αντικείμενα...οπότε δεν γλιτώνει το GC...
yincyun Δημοσ. 20 Απριλίου 2016 Μέλος Δημοσ. 20 Απριλίου 2016 Κάνε profile όπως σου πρότειναν για να δεις αν έχεις αντικείμενα (λίστες, collections, set) που ξεχειλωνουν και σου τρώνε την μνήμη. Με το να αλλάξεις τους integer σε short δε νομίζω να σωθεις Αυτό προσπαθώ να κάνω τώρα δε το χω ξανακάνει! Θα μπορούσες να το αντιγράψεις στο cloud9 και να δοκιμάσεις να το τρέξεις εκεί. Αδύνατο δυστυχώς να τρέξει σε άλλο σύστημα. Μιας και λες ότι παίζουν οι χρόνοι εκτέλεσης, τότε μιλάμε είτε για στοχαστικές διαδικασίες είτε για διαδικασίες που παίρνουν random input (π.χ user κτλ). Πρέπει να δεις εάν το θέμα που έχεις είναι όντως θέμα μνήμης ή αναγκαίων υπολογισμών. Το ότι αργεί, έτσι γενικά, δεν λέει κάτι. Προσπάθησε να απομονώσεις το πρόβλημα. Είναι μνήμη; Είναι υπολογισμοί; Τι; Εάν είναι μνήμη, τότε από τι προκαλείται; Από φόρτωμα αρχείων; Από μεταβλητές; Εάν είναι από αρχεία, δες τα streams. Εάν είναι από μεταβλητές, οργάνωσε καλύτερα τον κώδικά σου. Εάν είναι υπολογισμοί, τότε σκέψου το ενδεχόμενο να χρησιμοποιήσεις τεχνικές vectorization ή στατικούς πίνακες αντί για List ή κάποιο library για fast math. Αλλά το "πάει αργά" δεν βοηθάει. Είναι σαν να λες στον γιατρό "πονάει η κοιλιά μου". Θα περάσω το κώδικά μου όπως προτείνεις με αυτή τη σειρά ξανά μήπως χάνω κάτι κάπου αφού δοκιμάσω το profile. ΥΓ: μου έφτιαξες τη διάθεση με το τελευταίο ευχαριστώ! Θελω να καταλάβει τι εννοεί ο OP ότι χρησιμοποιεί ξανά ό,τι γίνεται. Σκέφτομαι ότι ακόμα και αυτό μπορεί να μην είναι ότι φαίνεται, και ότι στην ουσία να δημιουργεί νέα αντικείμενα...οπότε δεν γλιτώνει το GC... OP = ;; Συγννώμη δε ξέρω τι σημαίνει Όταν τελειώσει η εκτέλεση και ξεκινήσει τα πάντα απο τη αρχή κάνει τα πάντα null στο τέλος πριν κλείσει η do while και τα ξαναρχικοποιεί στην αρχή του κώδικα μέσα στη do while αν αυτό βοηθάει παραπάνω αυτό που σκέφτεσαι. Για String μήπως παίζει καλύτερα το StringBuilder Δε το ήξερα θα το ψάξω όταν βρω χρόνο γιατί είναι διαφορετική φιλοσοφία εντελώς και δε θέλω να πειράξω κάτι που δουλεύει. Ευχαριστώ πάντως. 1
M2000 Δημοσ. 20 Απριλίου 2016 Δημοσ. 20 Απριλίου 2016 Άρα αν κάνεις null κάνεις μια τρύπα στο νερό...αφού καταστρέφεις τα αντικείμενα! OP=Original Poster
yincyun Δημοσ. 20 Απριλίου 2016 Μέλος Δημοσ. 20 Απριλίου 2016 Άρα αν κάνεις null κάνεις μια τρύπα στο νερό...αφού καταστρέφεις τα αντικείμενα! OP=Original Poster Και πως να τα "μηδενίζω" πριν τη νέα εκτέλεση χωρίς προβλήματα; Τα κάνω null και τα ξαναρχικοποιώ στην αρχή.
M2000 Δημοσ. 20 Απριλίου 2016 Δημοσ. 20 Απριλίου 2016 Αν έχεις στο Loop την καταστροφή αντικειμένων..έχεις θέμα. Μηδενίζεις τις ιδιότητες ή για την ακρίβεια έχεις μια μέθοδο που το κάνει! Αλλά το αντικείμενο..παραμένει ζωντανό!!!!!!!
jimex Δημοσ. 20 Απριλίου 2016 Δημοσ. 20 Απριλίου 2016 Ο ήδη υπάρχον κώδικας είναι καλός; Γιατί αυτό καταλαβαίνω από το πρώτο post. Οι αλγόριθμοι που χρησιμοποιούνται είναι σύγχρονοι και επιβεβαιωμένα αποδοτικοί; Αν όχι, μπορούν να ισχύουν ολα τα παραπάνω και να βελτιώσουν σημαντικά την απόδοση. Αν ναι, τότε bad luck. Από τη μύγα κανείς δεν έβγαλε ξύγκι. Less ram more cycles or less cycles more ram και δε νομίζω σε ένα τόσο παλιό μηχάνημα να περισεύει τίποτα από τα δύο... Νοίκιασε ενα μηχάνημα και τρέξτα εκεί
yincyun Δημοσ. 20 Απριλίου 2016 Μέλος Δημοσ. 20 Απριλίου 2016 Ο ήδη υπάρχον κώδικας είναι καλός; Γιατί αυτό καταλαβαίνω από το πρώτο post. Οι αλγόριθμοι που χρησιμοποιούνται είναι σύγχρονοι και επιβεβαιωμένα αποδοτικοί; Αν όχι, μπορούν να ισχύουν ολα τα παραπάνω και να βελτιώσουν σημαντικά την απόδοση. Αν ναι, τότε bad luck. Από τη μύγα κανείς δεν έβγαλε ξύγκι. Less ram more cycles or less cycles more ram και δε νομίζω σε ένα τόσο παλιό μηχάνημα να περισεύει τίποτα από τα δύο... Νοίκιασε ενα μηχάνημα και τρέξτα εκεί Κοίτα! Ο κώδικας και ο αλγόριθμος γενικά είναι δικιά μου δουλειά και κάνει αυτό που πρέπει να κάνει. Όπως είπα και στην αρχή δεν είμαι κάποιος τέλειος προγραμματιστής απλά το χρειάζομαι για να πάρω τη μετρική που θέλω οπότε δε ξέρω κατά πόσο είναι σύγχρονος και επιβεβαιωμένα αποδοτικός! Κάνει αυτό που πρέπει απλά θέλω να το κάνει πιο γρήγορα Και μάλλον όσο το ψάχνω καταλήγω ότι όπως το έθεσες προσπαθώ να βγάλω απο τη μύγα ξύγκι αλλά είναι αναγκαίο κακό. Δυστυχώς πρέπει ότι είναι να γίνει να γίνει πάνω στο συγκεκριμένο μηχάνημα. Αν δεν δουλέψει πιο γρήγορα θα κάνω τα πάντα από την αρχή μάλλον και σε περισσότερα κομμάτια πράγμα το οποίο ΔΕΝ πρέπει να γίνει για διάφορους λόγους αλλά και για την ψυχική μου υγεία μιας και είναι δουλειά 4 μηνών!
groot Δημοσ. 20 Απριλίου 2016 Δημοσ. 20 Απριλίου 2016 Πάντως, εάν έχεις αρκετό string handling τότε έχεις δει τα string related classes που έχει η Java; Έχεις σκεφτεί για python;
yincyun Δημοσ. 20 Απριλίου 2016 Μέλος Δημοσ. 20 Απριλίου 2016 Πάντως, εάν έχεις αρκετό string handling τότε έχεις δει τα string related classes που έχει η Java; Έχεις σκεφτεί για python; Γνωρίζω αρκετά και λόγο του το ότι το έχω ψάξει αυτό το καιρό δε λέω όμως τα ξέρω όλα. Python δεν ξέρω και αυτή τη στιγμή δεν υπάρχει χρόνος για να μάθω. Όσο έχω ασχοληθεί είναι λόγο GPIO του raspberry για hobby. Κάποιο παιδί πιο πριν πρότεινε το StringBuilder που δε το γνώριζα και μόλις καταλήξω με αυτά που ψάχνω τώρα θα κοιτάξω και αυτό.
M2000 Δημοσ. 20 Απριλίου 2016 Δημοσ. 20 Απριλίου 2016 Μου αρέσει που έγινα παιδί πάλι! Φίλε να ρωτήσω γιατί χρησιμοποιείς strings; Επιγραμματικά θέλω να το αναφέρεις!
groot Δημοσ. 20 Απριλίου 2016 Δημοσ. 20 Απριλίου 2016 Γνωρίζω αρκετά και λόγο του το ότι το έχω ψάξει αυτό το καιρό δε λέω όμως τα ξέρω όλα. Python δεν ξέρω και αυτή τη στιγμή δεν υπάρχει χρόνος για να μάθω. Όσο έχω ασχοληθεί είναι λόγο GPIO του raspberry για hobby. Κάποιο παιδί πιο πριν πρότεινε το StringBuilder που δε το γνώριζα και μόλις καταλήξω με αυτά που ψάχνω τώρα θα κοιτάξω και αυτό. Αυτό λέω... Παίζει και stringbuffer εάν έχεις και ανάγκες synchronization. Μπορείς να γράψεις το πρόβλημα (επιγραμματικά) και τι έχεις κάνει; Όχι το φυσικό πρόβλημα, αλλά το υπολογιστικό.
yincyun Δημοσ. 22 Απριλίου 2016 Μέλος Δημοσ. 22 Απριλίου 2016 Μου αρέσει που έγινα παιδί πάλι! Φίλε να ρωτήσω γιατί χρησιμοποιείς strings; Επιγραμματικά θέλω να το αναφέρεις! Δε κατάλαβα τι με ρωτάς Και τι να χρησιμοποιήσω δηλαδή;! Αυτό λέω... Παίζει και stringbuffer εάν έχεις και ανάγκες synchronization. Μπορείς να γράψεις το πρόβλημα (επιγραμματικά) και τι έχεις κάνει; Όχι το φυσικό πρόβλημα, αλλά το υπολογιστικό. Το υπολογιστικό δεν είναι κάτι τρομερό. Διαβάζει ένα αρχείο txt παράγει κάποια τυχαία string άσχετου για το θέμα μας περιεχομένου και συνδιαστικά βγάζει ένα αποτέλεσμα και συγκρίνει κάποια πράγματα. Όχι δεν παίζει θέμα για synchronization. Είναι εντελώς άσχετο η δουλειά που κάνει με το ότι είναι αργό το πρόγραμμα και κολλάει. Παιδιά ξαναλέω δεν είμαι κάποιος υπερπρογραμματιστής ούτε αυτό είναι ουσιαστικά η δουλειά μου! Με αυτά που έμαθα και ξέρω και ακόμα μαθαίνοντας κάποια καινούργια πράγματα πορεύομαι! Αυτή τη γλώσσα ήξερα που να ξέρω πως να κάνει αυτό που ήθελα καλύτερα και με αυτό το έκανα. Το System.gc() τελικά κάπως βοήθησε αλλά έχει πολύ δρόμο ακόμα για να φτάσει σε επιτρεπτά επίπεδα ταχύτητας ώστε να γίνεται δουλειά. Φτιάχνω μια νέα έκδοση του προγράμματος με stringbuilder και σε λίγες μέρες θα έχω αποτέλεσμα. Στη πορεία αν υπάρχει κάτι νεότερο ή κάποια καινούργια ιδέα παρακαλώ πείτε μου να την εφαρμόσω. Ξέρω ότι δεν έχω δώσει πολύ πληροφορία για το πρόβλημά μου και απαντάτε στα τυφλά αλλά δυστυχώς δεν είναι εύκολο και ευχαριστώ όποιον κάνει το κόπο να βοηθήσει έστω κι έτσι.
parsifal Δημοσ. 22 Απριλίου 2016 Δημοσ. 22 Απριλίου 2016 Κρίμα που δε μπορείς να δώσεις μία ιδέα για τη λογική του προγράμματός σου, έστω σε ψευδοκώδικα, διότι αν π.χ. ο αλγόριθμος που χρησιμοποιείς γίνεται να αντικατασταθεί από άλλον με μικρότερη πολυπλοκότητα, θα μπορούσε ο χρόνος εκτέλεσης σου να πέσει ενδεχομένως και τάξη μεγέθους. 2
Dark_Sage Δημοσ. 24 Απριλίου 2016 Δημοσ. 24 Απριλίου 2016 ανοιξε task manager και δες ποσο cpu σου τρωει οταν τρεχει. μηπως τελικά δεν ειναι θέμα ram και ειναι θεμα cpu? Aπο τη περιγραφη που εδωσες εκτος και αν το txt ειναι μεγεθους Gb δεν φaiνεται οτι φορτωνεις πολλα στη ram. Αν κανεις πολλά I/O με το δίσκο τοτε ισως να δεις λιγο και το stringbuffer που ειπώθηκε παραπανω ή να γράφεις μια φορά στο τέλος αντι για πολλές συνεχόμενα Μετα δες τι βιβλιοθηκες φορτωνεις στο προγραμμα. Ισως να φορτώνεις πολλά στο jre που να μην τα χρειάζεσαι
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα