Στέργιος Παπαδημητρίου:"Scientific scripting at the Java platform using ScalaLab" (Eastern Macedonia and Thrace Institute of Technology, 2014)
: Η επόμενη διαάλεξη είναι από τον κύριο Στέριγκο Παπαδημητρίου. Το θέμα της έχει να κάνει με λογισμικό, software. Πολύ συχνά όταν εμείς οι μηχανικοί μιλάμε για μηχανές και μηχανισμού σκεφτόμαστε πράγματα ηλεκτρομιχανωτικά και πολύ κλογά. Όμως και το λογισμό είναι και αυτό μία μηχανή. Απ'τη μεγάλη σκέψη, πολύ χρόνο και αναπτύσεις κάτι το οποίο έχει κάποιες ιδιότητες. Οι οποίες είναι χρήσιμες. Τώρα το λόγο αυτός είναι ο Παπαδημητρίου. Θα σας παρουσιάσω τα βασικά πράγματα σχετικά με ένα περιβάλλον πανεπτήσεων. Λέγεται Scala Lab. Έχει σαν στόχο να δώσει του μηχανικού τη δυνατότητα να γράφει κώδικα εύκολα. Σε στήλ Ματ Λάβ να μπορεί να γράψει επιστημονικό κώδικα εύκολα. Η λέξη κλειδί είναι το εύκολα. Μπορεί να γράψει απλά κώδικα για επιστημονικές φαγματικές και να μπορεί το ελέγχιστο περιβάλλον scripting, δηλαδή το περιβάλλον να έχει συνέχεια. Δηλαδή οι εδωλές που εκτελέστηκαν προηγούμενα να μπορούν να χρησιμοποιηθούν τα αποτελέσματα τους συνέχεια. Αυτή είναι την έννοια του scripting. Εδώ το περιβάλλον είναι η Scala Lab και τρέχει η Java Virtual Machine. Το πρώτο πράγμα τώρα που πρέπει να εξετάσουμε είναι αν η Java Virtual Machine κατάληγε για επιστημονικές φαγματικές. Η Java είναι περιβάλλον το οποίο τελεί κώδικα σε εικονική μηχανή. Παλαιά ήταν σχετικά ιδέρπητος κώδικας και σχετικά αργός. Αν σήμερα η Java Virtual Machine είναι κατάληγη για επιστημονικές φαγματικές σε ψηλής απόδοσης. Η απάντηση σ' αυτό το πρώτο πρώτο ερώτημα που πρέπει να πτήσουμε είναι αν το περιβάλλον αυτό επειδή τρέχει σε Java Virtual Machine μας κάνει να υποστηρίξουμε επιστημονικές φαγματικές. Αλλιώς θα το γράψουμε σε C για παράδειγμα. Σε C είναι το πιο γρήγορο τουλάχιστον θεωρητικά. Εντάξει, τουλάχιστον σε πιο high level ουγρός ελαιτών, λίγο από πνευράς user interface, από πνευράς ευκολίας, αλλά αν θα έχουμε ψηλής απόδοσης του οικολογισμού, κάποια ψηλή για να το γράψουμε σε C, όχι όχι σε Java. Η απάντηση όμως είναι σήμερα ότι... η απόδοση της Java σήμερα είναι μεταξύ C και οπτιμάζεται σε C. Δεν το περίμενα. Περίμενα, όταν έκανε η χθενή σειρά από ελέγχους σε διάφορες επιστημονικές φαγματικές, νουμέρικα ανάλυσης προγράμματα, δεν το περίμενα ότι Java θα περνά σε C. Δηλαδή, εντυπωσιάστηκα ότι προγράμματα, για παράδειγμα integration, numerical equations, έτρεχαν σε Java ευρύτερα από C. Δεν το περίμενα. Η Java πέφτει μεταξύ C και οπτιμάζεται σε C. Σαν Windows. Δεν είχε εφορά. Οι δικές της GSC χρησιμοποιούσαν τον CL. Τα αποτελέσματα δεν έχουν εφορά. Δηλαδή, η Java πέφτει μεταξύ GSC unoptimized ή CL unoptimized και GSC optimized ή CL optimized. Αν βάλεις δηλαδή το option όχι, όχι, είναι το maximum optimizations, τότε συνήθως ο κώδικας C είναι γρήγοροτερος από το κώδικα Java, όχι μεγαλύτερη φαραπάρη. Και υπάρχουν εφαρμογές όπως το FFT. Το FFT, η Java το κάνει πιο γρήγορο και όχι unoptimized. Δεν το περίμενα. Αυτό σας πέτει εντυπωσιάστηκα. Ήταν κατοικοδέτητο, δεν το περίμενα. Και έχω αναπτύσσει και ορισμένες συναρτήσεις βασικές και συκολύ οπτιμάζεται σε C με δικές δομές μόνο. Με pointer arithmetic, παράδειγμα matrix multiplication, pointer arithmetic και με array-to-array συσσυριακά, δηλαδή του multidimensional array καθηκεριμένο σαν συρριακά στιγμή. Για να ετοιμαστεί την class locality. Και πάλι η Java είναι γρήγοροτερη σημάτια και multiplication από τη C. Είναι πάνω τα δύο που εντυπωσιάστηκα, γιατί δεν περίμενα να γίνει έτσι. Περίμενα ότι η C είναι γρήγορη. Πιο γρήγορη από την Java. Ακόμα και unoptimized με περίμενα να είναι πιο γρήγορη. Η πρώτη φορά που εντυπωσιάστηκα, ήταν ότι η κώδικα Java βγήκε πιο γρήγορη από την C. Δεύτερη φορά που με το ζόρι η unoptimized C έδινε λίγο γρήγοροτερη από την Java. Επομένως ένα βασικό πράγμα που πιστεύουν χρήσιμο είναι ότι σήμερα η Java είναι κοντά σε unoptimized C. Γιατί αυτό συμβαίνει, γιατί η Java κάνει time cobaltation. Η σύγχρονη Java virtual machine κάνει time cobaltation. Υπάρχει κώδικα από τα μοναπάτια του προγράμματος που τρέχουν. Έχει δύο φάσεις. Ένας είναι interpreter, παίρνει το bytecode. Το bytecode της Java, τα classifies δηλαδή, είναι από τη φύση τους καλά για intermediate representation του προγράμματος. Είναι καλά για δύο πράγματα. Ένα για να κάνει interpretation των bytecodes, ο παραδοσιακός Java interpreter, που έπαιρνε τα bytecodes και τα τριμήνεται. Είναι αργός. Ο hotspot compiler σημερινός της Java έχει δύο φάσεις. Στην πρώτη φάση κάνει αναγνώριση του προγράμματος και συνέχεια στη δεύτερη φάση μετράει ταυτόχρονα με την αναγνώριση. Βρίσκει τα μονοπάτια του flow εκτέλεσης, της ροής εκτέλεσης, τα οποία επαναλαμβάνονται. Κάνοντας ταυτόχρονα με την εκτέλεση, αναγνωρίζει και τα μονοπάτια που έχουν loops, τα οποία έχουν τα hotspots. Τα μονοπάτια αυτά ταυτόχρονα τα δίνει στο compiler για compilation και για σύνδεση. Την επόμενη φορά που θα χρειάζονται αυτά τα μονοπάτια συνδέεται δυναμικά όχι ο intermediate codecast, συνδέεται δυναμικά πραγματικός codecast μηχανής. Γι' αυτό είναι in Java γρήγορη, γιατί ήταν compilation δυναμικά μόνο τα hotspots μόνο. Τα hotspots που θα κάνουν compilation ελάχιστα για ένα μεγάλο πρόβλημα που είναι Scala Lab, θα τρέξουμε στη συνέχεια, είναι ελάχιστα σε σχέση με τις συνολικά class files. Το περιβάλλον του Java είναι δυναμικό, ναχεί ήταν δυναμικό, δηλαδή μόνο οι class files οι οποίες χρειάζονταν μόνο αυτές χρησιμοποιούνταν. Τώρα μόνο τα μονοπάτια που χρειάζονται, μόνο αυτά γίνονται compile και δυναμικά compile. Το πλευράς compilation, τα byte codes είναι πολύ καλά και για intermediate representation του προγράμματος. Δηλαδή, οι παραδοσιακοί compilation συνοχώνται aux intermediate representations, ενδιάμεσα αναπαραστάσεις, στις οποίες κάνουν optimizations. Φαρμόρφουμε μια σειρά από μετασχηματισμούς, στις intermediate representations, πριν πάνε στο στάδιο του code generation. Εδώ το ίδιο το byte code της Java είναι και καλό για intermediate representation. Μέχρι που το εργοτζάστητα είναι κομπάλια, δεν θα της και βάζει άλλο intermediate representation. Παίρνει το ίδιο του έτοιμο intermediate representation και κάνει optimizations αυτό. Επίσης, άλλο καλό με τη Java είναι ότι οι σύγχρονοι μορκοκοξεργαστές, ο κομπάλιαρ της Java κάνει δουλειά ταυτόχρονα σε άλλους πυρήνες. Δηλαδή, η εφαρμογή Java τρέχει σε μερικούς πυρήνες συνδέπητες, ταυτόχρονα οι άλλοι πυρήνες κάνουν κομπάλια, τα hotspots, και τα έχουν έτοιμα. Δηλαδή, μεταλλεύονται καλύτερα του μορκοκοσέση. Γι' αυτό η τεχνολογία Java σήμερα αγγίζει την optimizations, την πλησιάζει, και πιστεύω στο μέλλον μπορεί να την έχει δυνατότητες ακόμα και να την ξεπεράσει την optimization. Γιατί? Γιατί η Java δεν έχει pointers. Το ότι δεν έχει pointers στην Java, δίνει στον κομπάλιαρ πολύ μεγαλύτερη ευελιξία στις optimizations που μπορεί να κάνει. Γιατί με τους pointers είναι συδυσκολεύονται τα πράγματα. Το κομπάλιαρ δεν μπορεί να ξέρει, δεν μπορεί να εγγυηθεί ότι μια μεταλλευτητή δεν θα πειραχτεί. Μπορεί να πειραχτεί έμψα, μέσω pointers. Περιπλέκει δηλαδή την διαδικασία των optimizations και η ύπαρξη pointers την περιπλέκει πάρα πολύ συστηματικά. Η Java δεν έχει pointers που μένει στο just-in-time κομπάλιαρ έχει πιο εύκολη δουλειά να κάνει. Πιο εύκολη και πιο δομμένη δουλειά. Γι' αυτό πιστεύω ότι οι καινούργιες δουλειές του Java θα ξεπεράσουν και την optimization. Το ίδιο ισχύει και του.NET. Και στο.NET είναι αντίστοιχα τα πράγματα. Ό,τι λέω για Java, ισχύει και για το.NET. Και η απόδοση είναι παρόμη. Έχω ελέγξει την απόδοση του.NET. Η απόδοση πέφτει κοντά στη Java, πότε λίγο καλύτερα, πότε λίγο χειρότερα. Αλλά η φιλοσοφία είναι η ίδια, γιατί απλώς αλλάζει λίγο η virtual machine. Ό,τι ισχύει για την Java, ισχύει για το.NET. Εδώ έχω μερικά παραδοματάκια στη Scala Lab. Η Scala Lab βασίζεται στη Java, γιατί είναι ότι η Java έχει τη δυνατότητα να τρέξει το πιο βελτισμένο με την optimize and see προγράμματα επιστημονικά και να χρησιμοποιηθεί για υπολογισμούς για high performance computing. Επίσης, ένα άλλο βασικό που δεν το έχω πει, είναι ότι στη Java το multithreading, το threading που είναι βασικό σημαντικό στην Java, είναι οσωματωμένο στη γλώσσα. Σε αντίθεση με τη C, αν και η C, η καινούργια C, έχει επίσης το multithreading οσωματωμένο στη γλώσσα. Δηλαδή, η καινούργια C++11, το καινούργιο standard C, έχει χαρακτηριστικά Java mode, που είναι για περιβόλμα unmanaged. Η Java και το document είναι για unmanaged περιβόλμα. Αλλά και η C++11, έχει τη φιλοσοφία της Java, με την έννοια ότι, για βασικές εφαρμογές, έχει έτοιμοι χρησιμοποιηθείες, έτσι ώστε να μην χρειάζεται ο user να έχει independence, στον κάθε που βάλει το συγχωριστά. Το multithreading της Java, που είναι βασικό σημαντικό για υπολογισμού και υπολογισμού σε ψηλής απόδοσης, βασίζεται σε mapping one-to-one με native threads. Native threads του λειτουργικού συστήματος, που είναι πολύ βασικό, όσον αφορά την κλιμάκωση της εφαρμογής. Το να μπορείς να κλιμακώνει μια εφαρμογή Java σε πολλούς πυρήνες, γιατί αυτά τα threads που λειτουργεί η Java δηλαδή, έχουν την υποστήριξη του λειτουργικού συστήματος. Ένα άμεση υποστήριξη με kernel threads, του λειτουργικού συστήματος. Αν δεν συγχειρούνται οι reviews, δεν βλέπουμε το threading, τότε τα πράγματα δεν θα είναι τόσο καλά από απόδοσης. Γι' αυτό στη Scala, έχω προψεσμό σε multithreading πινάκων, που λειτουργεί πάρα πολύ καλά και δεν κατάφερα να το ξεπεράσω σε απόδοση, και με οπτιμάζει την υποστήριξη του λειτουργικού συστήματος, που έχω γράψει για μάτρικες μονοπληκές, που χρησιμοποιεί pointer arithmetic και την bthreads library. Περίμεναν ότι θα λειτουργήσει καλύτερα η library της C, αλλά δυστυχώς, όχι δυστυχώς, δυστυχώς ευτυχός, όπως το δει καθένας, ευτυχός για το Java user, δυστυχός για τους C users, η απόδοση της Java είναι καλύτερη, λαθρά καλύτερη από την απόδοση της C, του προψησιασμού multi-thread, που βασίζεται σε C friends και είναι οπτιμάζει. Είναι λαθρά καλύτερη λόγω του ότι υπάρχει overhand σε Java για μετάδοση των buffers, δηλαδή ισοδύναμο βασικά είναι, απλώς στην Java είναι λίγο καλύτερος ο φρόνος, επειδή δεν χρειάζεται μετάδοση μεταξύ native περιβάλλοντος για την Java virtual machine. Τώρα σ' πάμε να δείξουμε λίγο παραδείγματα. Η Scala βασίζεται σε Java και βασίζεται επίσης και στη γλώσσα Scala, η οποία είναι μια γλώσσα καινούργη για την Java virtual machine. Ο κώδικα Scala λειτουργεί, είναι τελείως συμβατός με το κώδικα Java. Η Scala έχει το χαρακτηριστικό ότι είναι και functional γλώσσα. Όσοι έχουν ασχοληθεί με functional programming θα ξέρουν ότι είναι διαφορετικό στην προγραμματισμό, το functional style. Η Scala είναι statically typed, όπως είναι η Java. Ο Scala Compiler έχει τη δυνατότητα να παράγει το ίδιο γρήγορο κώδικα με την Java. Επίσης η Scala έχει μια σειρά από σχεδιάσεις που δίνουν τη δυνατότητα να έχεις συγκεκριμένες αλλάσεις της σύνταξης της γλώσσας. Και η καινούργια σύνταξη δεν χρειάζεται κάποια interpretation, όπως να είναι κώδικα σε όλους τους ανθρώπους που θα χρειάζεται το ίδιο αποτελεσματικά με τη βασική σκάλα. Αλλά ας δείξουμε λίγο τα παραδείγματα και τα θεωρούμε να ρωθούμε και οι πόντες του συστήματος. Για να εκτελέσουμε τη Scala Lab, η εκτέλεση είναι πολύ απλή. Σαν πρόβλημα βασικά στη Scala Lab κοιτάω να είναι ένα πρόβλημα να είναι όσο γίνεται πιο πρακτικό με την έννοια του user να μην χρειάζεται να κάνει τίποτα άλλο επέρα από double click για να δουλεύει μετά σαν μαντλά από εκεί πέρα. Εδώ λίγο έτσι θα σας δείξω το τρόπο που ξεκινάει το πρόγραμμα να πάει να κάνεις double click πάνω στο path file. Αυτό είναι το client για την client java virtual machine. Η client java virtual machine από τις servers διαφέρνει ότι η client έχει περίπτωρο response και πιο γρήγορο response. Η server κάνει περισσότερες optimizations. Υπάρχει μεγάλη διαφορά σε μεγάλους οικονομισμούς. Βοηθούν οι servers να τρέξει τρεις και τέσσερις φορές γρήγορα. Δηλαδή οι optimizations που κάνει ο java time pump είναι σημαντικές της server. Δεν είναι δικαιωμένο. Δηλαδή ο server compiler που κάνει μεγάλους οικονομισμούς τα τρέχει μερικές φορές και τρεις και τέσσερις φορές γρήγοροτερα. Αυτό είναι το script για την client version. Ας δούμε τη server. Αυτή είναι για τη server. Αυτή είναι για τη server για τη 64-bit java virtual machine. Έχει ορισμένα άλλα όψιμους που ρυθμίζουν παραπαράμετρους στη java virtual machine. Η library. Η library είναι τα πάντα που βρίσκει και η native κώδικα. Γιατί σε χαλαλά βρέχει και η native κώδικα. Και siu είναι η native, δηλαδή η optimizer είναι η si. Και πίσω άλλο βασικό native είναι η cuda. Μια ίδια σύνδεση για να μπορεί να τρέχει το πρόγραμμα της εξεργαστής γραφικών NVIDIA. Και τα πράγματα του speedup είναι πάρα πολύ σημαντικό. Μπορεί να φτάσει και χίλιες φορές ανάλογα την κάρτα γραφικών που έχεις. Και τα πράγματα είναι πολύ σημαντικά λόγω υπηρεσίας high performance computing. Η cuda μπορεί να συζητώ σε σοβαρά speedups. Παρακαλώ. Επειδή όταν στρέχουμε στο bath file, ξεκινάει το περιβάλλον. Το περιβάλλον βασίζεται σε java sui, το user interface δηλαδή. Και είναι τα φρένδι σε steel matlab, ίσως και πιο φρένδι από το matlab. Με την αντικαίσθηση και το command-interface-a-matlab. Αυτό εδώ είναι σαν ένα games. Δηλαδή το steel είναι σαν να έχεις ένα νέντητο, και να μπορείς να έχεις και κώδικο πλησία, και για πράγματα να έχεις βοηθάει να γράψεις όλο το κώδικο σε steel javas kawaii. Τώρα εδώ για να τρέχει σε ένα πρόγραμμα, απλώς το κάνουμε copy-paste πάνω στο νέντητο, δηλαδή αυτό το πρόγραμμα για να το τρέξω. Εδώ για παράδειγμα την πρώτη ρετρολή. Η πρώτη ρετρολή αυτή είναι η σκάλα σε steel matlab. Είναι βελτιώσικο που κάνει εγώ στη σκάλα για να έχει σύνδεξει matlab. Δηλαδή εδώ φαίνεται σαν matlab, το κώδικο καλό περίπτωπο της matlab. Αυτό δημιουργεί ένα διάνεσμα από τον 0 να στο 500. Αυτό για να το τρέξουμε, έφτρεξε, μιλήσει το πέκτο. Αυτό τρέχει σε περιβάλλον της τσάλο βίλτορμασίνης τώρα. Απλώς και αυτό που έχει γίνει είναι ότι αυτή είναι μια εντολή έγκαιρη σκάλα, επειδή έχω κάνει βελτιώσεις, έχω κάνει τροποποίηση στη σκάλα για να έχει ματλαγωδηθεί στις εντολές. Ματλαγωδηθεί στις εντολές, αλλά πέρα από αυτά είναι σκάλα, σαν source-σκάλα. Αυτό περνάει τώρα από τον exit, πηγαίνει στο Scala Interpreter, αυτή εντολή, ο λιχανισμός που γίνεται, που τρέχει αυτό. Περνάει στο Scala Interpreter, το Scala Interpreter δημιουργεί μια κλασική Java ό,τι τρέχει σε Java, τρέχει σαν κλασική. Αφού τρέχει αυτή η κλασική Java, ο Interpreter παρακολουθεί τις μεταβλητές, δηλαδή παρακολουθεί τη μεταβλητή X, αυτή την κάνει σαν public, public μεταβλητή, τις κλάσσες, για να μπορεί να εξάγει την τιμήθιση, για να την κρατήσει. Ο Scala Interpreter υλοποιεί ένα layer για να παρέχει στον user την έννοια του workspace σαν τη MATLAB. Η MATLAB το σημαντικό που έχει είναι το workspace, δηλαδή το ότι φιτελείς κώδικα, το κώδικα που φιτελείς παίρνει το προηγούμενο κοντέξ και το επηρεάζει. Τα αποτελεσματά του είναι ορατάστατα συνέχεια. Αυτό είναι το βασικό που σου δίνει την ευκολία στον μαθηματικό, στον επιστήμονα, στο να δουλεύει. Αυτά τα πράγματα είναι πολύ πτυσπαστικά και πολύ αντιπαραγωγικά. Παράγεται το vector που είναι η υπηρεσία της Scala Lab. Το vector είναι την μονοδιάστατο πίνακα. Εδώ πάλι μια high level εντολή που λοποιεί σαν στήμα κλαυκαληθείνδρολη. Το περιβάλλον είναι σαν Matlab απλώς είναι Scala. Όλη η σύνταξή τους είναι τροποποίηση της σύνταξης της Scala ώστε να μοιάζει με Matlab. Είναι Scala σαν γλώσσα. Δεν υπάρχει δεύτερο από πάνω. Επειδή η Scala έχει σαν γλώσσα μεγαλύτερη εμπληξία από την Java. Η Java δεν έχει καμία εμπληξία. Δεν μπορεί στην Java να αλλάζει σύνταξη. Στις δυναμικές γλώσσες όπως είναι η Groovy έχουν δυνατότητα να αλλάζουν σύνταξη αλλά όχι τόσο καλή εμπειρία όσον η Scala. Η Scala είναι ακόμα καλύτερη και από δυναμικές γλώσσες για να αλλάζει τη σύνταξη της γλώσσας. Αυτό είναι σαν ευκολία. Αυτό είναι καλό. Αν έχω τη MATLAB τί να κάνω αυτό. Κάποιος που δουλεύει στη MATLAB θα πει γιατί να δουλέψω στη Scala. Από μια πλευρά θα έχει και δίκιο. Υπάρχουν και πράγματα στη Scala που βελτιώνουν κάποιων επιστήμονα. Βελτιώνουν τη δυνατότητα που θα έχει ένας επιστήμονος να δουλεύει γιατί στη Scala μπορείς να γράφεις και κώδικα σε still Java. Δηλαδή να κάνεις κομπάλι πλάσεις, να έχεις full object-oriented περιβάλλον ανάπτυξης, full functional περιβάλλον ανάπτυξης, σαν περιβάλλον ομορφιστικό. Η Scala είναι καλύτερη από τη MATLAB για να γράψεις μια μεγάλη εφαρμογή. Απλά πρέπει να ακούσεις μημέρικα αλλογλυμούς να τους γράφεις και να τους ελέγχεις και να τους τρέχεις εκείνη τη στιγμή γρήγορα και απλά. Σε αυτό είναι πάρα πολύ καλή η MATLAB. Αλλά στο να γράφεις μια πολύ πλοκή εφαρμογή που έχει 10 base, μόνο threading, πιθανόστιμε hardware, network programming και όλα αυτά, είναι δύσκολο. Η MATLAB είναι πιο απλά από αυτά. Υπάρχουν μια σχεδοκρατή library και Java που μπορείς να χρησιμοποιείς απευθείας και μπορείς να το κάνεις πιο εύκολα από τη MATLAB. Ας το τρέξουμε όλο αυτό μαζί. Συνέχεια έχω αυτή τη κλάσσια η οποία υλοποιεί διασύνδεση με native κώδικα από τη library.cc. Αυτή έχει ένα object native που συνδέεται με την library.cc που υλοποιεί μαθηματικές λειτουργίες στο μαθηματικό library.cc. Όλες οι library.cc μπορούν να συνεχίσουν το μηχανισμό μέσα του Java Native Interface. Είχα ξεκινήσει με χαρά, με ανάλογο προστοδίες. Τα πράγματα δεν μπορούν να κάνεις πιο γρήγορα στις περισσότερες λειτουργίες γιατί η Java είναι πιο γρήγορη. Σε αρχή νόμιζα ότι χρησιμοποιώντας native κώδικα θα τρέχουν πιο γρήγορα αλλά τις περισσότερες φορές δεν τρέχουν πιο γρήγορα. Αυτή είναι ένα C Object και είναι καλή library που βρήκα στο item.cc αλλά θα είναι ακόμα χειρότερα όταν πάει αυτή. Και αυτή και πολύ καλά που πάει πάνω στις περισσότερες φορές είναι πιο αργή από την Java. Οπότε είναι τζαβακόπος να κάνεις συναγράφεις γιατί με την Java τρέχουν πιο γρήγορα. Βλέπω ότι είναι πολύ γρήγορο και είναι πολύ χειρότερο. Αυτό είναι ένα τζαβάκο που βλέπω να κάνει μία τέτοια εμπνευσία. Είναι ένα τζαβάκο που είναι πολύ γρήγορο και είναι πολύ χειρότερο. Αυτό είναι ένα τζαβάκο που είναι πολύ γρήγορο και είναι πολύ χειρότερο. Αυτό είναι ένα τζαβάκο που είναι πολύ γρήγορο και είναι πολύ χειρότερο. Αυτό κάνει FFT σε Java και σε C στην συγκρίνηση του χρώματου Αυτό είναι το σήμα για αποτελέσματα και να δούμε τους χρόνους Ο χρόνος σε σει είναι 0,22 δευτερόλεπτα, ο χρόνος σε τζάββα 0,11 δευτερόλεπτα Στο FFT δεν κατάφερα να ξεπεράσω την τζάββα, όσο και να παιδεύτηκα στο FFT δεν κατάφερα Στα άλλα στις FFT η γενιβάλιος πάει με το ζόρι, με το χιλιάδες δυο ζόρια, η οφτιμάζευση πάει κατά 20-30% γρήγοροτερα Και το τι κάνουμε για real time πρώτα στιγμή Τζάββα δεν είναι σχεδεστή για real time, το standard τζάββα δεν είναι σχεδεστή για real time Υπάρχει τζάββα real time, χρειάζεται η κατάσταση τζάββα real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time Αυτό πρέπει να είναι output code, το οποίο θα έχει σακόδια real time