Ποιός είναι ο γρηγορότερος τρόπος να διαβάσω αριθμούς από αρχείο?

Ο τομέας μας. ;)
Απάντηση
kostas1507
Δημοσιεύσεις: 12
Εγγραφή: Σάβ Φεβ 08, 2020 5:39 pm

Ποιός είναι ο γρηγορότερος τρόπος να διαβάσω αριθμούς από αρχείο?

Δημοσίευση από kostas1507 »

Το προηγούμενο θέμα(Στην συζήτηση διάλογος και διαμάχες) αναφερόταν στις ταχύτητες διαβάσματος αρχείων στην c++ και μου έδωσε την ιδέα για αυτό. Εσείς οι λίγοι που χρησιμοποιείτε java πως διαβάζεται αριθμούς? Το Scanner το αποκλείω γιατί με τα σύνηθες δεδομένα του διαγωνισμού παίρνει περισσότερο από δευτερόλεπτο. Μετά από αρκετό ψάξιμο κατέληξα σε αυτήν την λύση που διαβάζει και ταυτόχρονα μετατρέπει σε αριθμό με την ίδια ταχύτητα πού το BufferedReader μόνο διαβάζει (στην οποία περίπτωση πρέπει μετά, με StreamTokinazer ή StringSplit να πάρεις τους αριθμούς ξεχωριστά).

Ξέρετε μήπως κάποιον γρηγορότερο τρόπο? Γιατί αν και πολύ (συγκριτικά) γρήγορη αυτή η λύση, στην απάντηση μου για την δεύτερη φάση του τρέχων διαγωνισμού πάλι παίρνει κάπου στο 80% του χρόνου (περίπου 50-80ms), για μία περίπτωση με της μεγαλύτερες πιθανές τιμές σύμφωνα με την εκφώνηση...

Ξέρω ότι δεν έχει πολύ σημασία σε αυτόν τον διαγωνισμό απλά με ενοχλεί που παίρνει τοσο μεγάλο ποσοστό του χρόνου!

jbalatos
Δημοσιεύσεις: 4
Εγγραφή: Κυρ Αύγ 09, 2020 2:22 pm

Re: Ποιός είναι ο γρηγορότερος τρόπος να διαβάσω αριθμούς από αρχείο?

Δημοσίευση από jbalatos »

Γενικά, οι διαγωνισμοί πια δίνουν διαφορετικό time limit για ορισμένες γλώσσες. Πχ, η java που έχει περίπου διπλάσιο χρόνο εκτέλεσης από τη c++ (με την χρήση BufferedReader και StringTokenizer) έχει time limit διπλάσιο αυτού που αναγράφεται στην εκφώνηση. Η python συνήθως έχει πενταπλάσιο limit, κ.ο.κ. Άρα το i/o με StringTokenizer είναι πολύ απλό στην υλοποίηση και έχει πολύ καλούς χρόνους. Αν κυνηγούσαμε το βέλτιστο χρόνο, τότε στην c++ όλοι θα γράφαμε δικές μας συναρτήσεις με getchar() :D

kostas1507
Δημοσιεύσεις: 12
Εγγραφή: Σάβ Φεβ 08, 2020 5:39 pm

Re: Ποιός είναι ο γρηγορότερος τρόπος να διαβάσω αριθμούς από αρχείο?

Δημοσίευση από kostas1507 »

Σε ευχαριστώ Δημήτρη, παράξενο που δεν αναφέρεται αυτό με τα διαφορετικά time limit στην εκφώνηση των προβλημάτων..

jbalatos
Δημοσιεύσεις: 4
Εγγραφή: Κυρ Αύγ 09, 2020 2:22 pm

Re: Ποιός είναι ο γρηγορότερος τρόπος να διαβάσω αριθμούς από αρχείο?

Δημοσίευση από jbalatos »

Τίποτα, πιθανότατα αφήνουν το time limit σε 1sec στις εκφωνήσεις γιατί μπορεί να αξιοποιηθεί σε όλες τις γλώσσες ο μνημονικός κανόνας "Σε 1 δευτερόλεπτο τρέχουν εκατό εκατομμύρια πράξεις". Στην java είναι οι μισές, αλλά για την παρασκευή καλού αλγορίθμου δεν παίζει ρόλο.

Απάντηση