Σάββατο 23 Ιανουαρίου 2016

Benchmark σε Windows 8 (VirtualBox)

Από την έκδοση 157 μπορούμε να χρησιμοποιούμε το πρόγραμμα m2000.exe χωρίς να δηλώσουμε τα ελληνικά ως γλώσσα για το κείμενο σε προγράμματα που δεν υποστηρίζουν Unicode.
H M2000 υποστηρίζει Unicode (και έγινε και μια τελική διόρθωση στο 157)
 
Χρησιμοποιώντας κώδικα από εδώ για ελληνικά  και από εδώ για αγγλικά με την έκδοση 8 αναθεώρηση 141, σε Windows 8 - 64bit σε Virtual Box (στο ίδιο μηχάνημα που δοκιμάζω και σε Windows 7 32bit). Η ταχύτητα είναι στο νορμάλ (Γρήγορο - Fast). Δείτε εδώ Πώς κάνουμε πιο γρήγορο το πρόγραμμα με μια εντολή..και πώς πιο αργό;  (Fast !, Fast, Slow ή Γρήγορα !, Γρήγορα, Αργα)

Συμπεράσματα: Στην έκδοση 141, η ταχύτητα και των δυο γλωσσών είναι σχεδόν ίδια. Και στις δυο περιπτώσεις τα ονόματα των μεταβλητών γυρνούν σε κεφαλαία κάθε φορά που τα βρίσκει ο διερμηνευτής! Αυτό συμβαίνει γιατί αποθηκεύονται με κεφαλαία γράμματα, και στα ελληνικά αφαιρούνται οι τόνοι. 
Ένα ερώτημα εδώ θα ήταν: "Γιατί οι μεταβλητές δεν υπολογίζονται από πριν;" 
Η απάντηση δεν είναι απλή. Αν γίνονταν αυτό τότε οι μεταβλητές που θα είχαμε θα ήταν υπολογισμένες από πριν για δεδομένο μπλοκ, άρα δεν θα μπορούσαμε να είχαμε αντικείμενα τα οποία θα είχαν δικές τους μεταβλητές, και θα έπρεπε να δηλώναμε τι ακριβώς θα έχουν. Άρα άλλαζε το σκεπτικό της Μ2000 που δεν θέλει να περιορίζει το τι ιδιότητες και μεθόδους έχει ένα αντικείμενο. Το αντικείμενο η Μ2000 το βλέπει ως κάτι που εξελίσσεται στην εκτέλεση, και όχι κάτι σταθερό, κάτι μόνιμο, όπως το θεωρούν άλλες γλώσσες. 

Δείτε στο παράδειγμα πως προσθέτουμε ιδιότητες σε αντικείμενα!

Class thing {
      day=1
}
Dim a(10)=thing()
PushOne(0,"night=2")
PrintOne(0,"night")
PushOne(0,{Alfa$="George"})
PrintOne(0,"Alfa$")
PrintOne(0,"day")
a(3)=a(0) ' copy a(0) to a(3)
PrintOne(3,"Alfa$") ' George
PushOne(3,{Alfa$="Peter"}) ' Peter
PrintOne(3,"KLM") ' not exist

Sub PrintOne(item, a$)
      Try Ok {
            inline "Print a("+str$(item)+")."+a$
      }
      If not Ok then Print "not exist"
End sub
Sub PushOne(item, a$)
Print "item, a$", item, a$
For a(item) {
      inline "group tmp {"+a$+"}"
      This=tmp 'union
}
End Sub




Benchmark (τιμές σε χιλιοστά του δευτερολέπτου)



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

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

You can feel free to write any suggestion, or idea on the subject.