Δευτέρα 12 Ιανουαρίου 2015

Βελτιστιοποίηση (Python)

Πριν δυό βδομάδες δούλευα μαζί με ένα φίλο σχετικά με ένα log manager σε Python
και είχαμε το εξής πρόβλημα . Κάθε φορά που ένας χρήστης πατάει το refresh πρέπει να γίνεται ένα ajax get request το οποίο θα επιστρέφει τις αλλαγές που συνέβησαν στο αρχείο . 
Ο κώδικας ήταν ο εξής :


diffs = differ.compare(files_cache[file_name], log_file.read())
diff_l = [diff for diff in diffs if re.search(diff_regex, diff)]
file_diffs[file_name] = "".join(diff_l)

Ο οποίος έπαιρνε τις αλλαγές και τις σύγκρινε εάν ξεκινάνε με "+" ή " " :
Επειδή με το  difflib της python επιστρέφονται και οι γραμμές που δεν έχουν αλλάξει ο έλεγχος αυτός έπαιρνε γύρω στα 11 λεπτά .

Όμως κάποιος ο οποίος θα σκεφτόταν ότι ένα log αρχείο έχει ΜΟΝΟ additions γιατί λοιπόν να κάτσεις να το διαβάσεις όλο και να μην ξεκινήσεις από εκεί που σταμάτησες ;

file_diffs[file_name] = file_contents[len(files_cache[file_name]):]

Χρόνος εκτέλεσης : 0,0001 s

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου