Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

.NET και ταχύτητα - Το Paint.NET

Îåêßíçóå áðü ôï ìÝëïò Παναγιώτης Καναβός. Τελευταία δημοσίευση από το μέλος Dimitris στις 20-12-2004, 01:11. Υπάρχουν 40 απαντήσεις.
Σελίδα 1 από 3 (41 εγγραφές)   1 2 3 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-10-2004, 14:38 260

    .NET και ταχύτητα - Το Paint.NET

    Έχω ακούσει αρκετές απορίες σχετικά με την ταχύτητα του .NET. "Κάνει πολύ ώρα να φορτώσει", "Το Grid γεμίζει πολύ αργά", "Το GDI+ είναι αργό" κλπ, κλπ.
    Η ταχύτητα του .NET φαίνεται από το Paint.NET. Είναι ένα φοιτητικό project για τη δημιουργία του αντικαταστάτη του γνωστού μας Paint. Είναι γραμμένο εξολοκλήρου σε C# και υποστηρίζει layers, effects, undo-redo history και κυρίως είναι ΠΟΛΥ ΓΡΗΓΟΡΟ! Και χρησιμοποιεί και alpha-blending στα tool windows, κάτι που θεωρείται ότι στριμώχνει αρκετά την κάρτα γραφικών. Το πρόγραμμα το ίδιο είναι-δεν είναι 5 MB! Cool
    Ο κώδικας είναι 7 MB. Είναι ένα πολύ καλό παράδειγμα για το πως μπορεί να φτιαχτεί μια καλή και γρήγορη εφαρμογή. Ή μήπως είναι απόδειξη ότι είναι δυνατόν να φτιαχτεί μια καλή και γρήγορη εφαρμογή χωρίς τεράστιο προϋπολογισμό, εκατοντάδες master programmers και άπειρο χρόνο? Devil


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-10-2004, 17:05 283 σε απάντηση της 260

    Re: .NET και ταχύτητα - Το Paint.NET

    Αυτα που λεγονται περι .net και ταχυτητα, 99% δεν ευσταθουν σε καμμια περιπτωση.
    Εδω υπαρχουν και IDE (π.χ το sharpdevelop) που ειναι πραγματικα γρηγοροι και δουλευεις, αν θελεις, σε αυτους χωρις κανενα προβλημα.

    Λιγο να ριξει κανεις μια ματια στο Execution Engine και θα καταλαβει πολλα πραγματα...
    Αντιθετα, τα πραγματα με την "αλλη μερια του φραχτη", τη Java, δεν ειναι και τοσο καλα...

    Software Engineer, specializes in Microsoft .net/C#, COM, Sql Server and now Python.
  •  15-10-2004, 19:00 285 σε απάντηση της 283

    Re: .NET και ταχύτητα - Το Paint.NET

    Δεν θα κατηγορούσα την Java έτσι εύκολα. Όπως και με το .NET πολλά πράγματα γίνονται πολύ πιο γρήγορα αν τα κάνεις με το σωστό τρόπο. Σε πολλές περιπτώσεις η Java φάνηκε αργή επειδή οι υλοποιήσεις ήταν λάθος, όχι η πλατφόρμα (Java ή J2EE) ή η γλώσσα.
        Αν θυμάσαι το πρώτο συγκριτικό benchmark που είχε γίνει μεταξύ Java και .NET ήταν το Pet Shop. Το .NET είχε πολύ πιο γρήγορο από την Java. Ο λόγος ήταν ότι η υλοποίηση του Pet Shop στη Java ήταν πολύ αργή. Αργότερα βγήκε η έκδοση 2 σε Java η οποία είχε παρόμοιες ταχύτητες με το .Net. 

        Γενικά, θα περίμενα το .NET να είναι πιο γρήγορο σε εφαρμογές rich client ή υπολογισμού (π.χ. audio streaming, DVD ripping) και αυτό γιατί συνεργάζεται πολύ πιο στενά με το λειτουργικό και το hardware. Σε εφαρμογές server θα περίμενα η διαφορά να είναι μικρότερη, κυρίως γιατί εκεί παίζει μεγαλύτερη σημασία η πλατφόρμα που θα χρησιμοποιήσεις. Αν, για παράδειγμα, ένα EJB χρησιμοποιεί cursors στη βάση, θα είναι πιο αργό άσχετα από τη βάση που καλεί, το λειτουργικό στο οποίο τρέχει και το application server στον οποίο είναι εγκατεστημμένο. Το ίδιο φυσικά ισχύει και για το .NET.
        Τέλος θα περίμενα διαφορά στην ταχύτητα επειδή το .NET είναι πιο νέο και συνεπώς περιέχει νεώτερους αλγόριθμους JIT και garbage collection. Δεν θα βασιζόμουν όμως σε μια τέτοια διαφορά.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  19-10-2004, 00:34 313 σε απάντηση της 283

    Re: .NET και ταχύτητα - Το Paint.NET

    Επειδη την ξερω την ιστορια με το pet shop, σου λεω οτι επειδη στην αρχικη του java version ηταν απεριγραπτα πιο αργο σε σχεση με την .net version, εκαναν rewerite σε καποια portions και optimize σε καποια αλλα με τη βοηθεια της Sun.
    Και παλι ομως, σε μερικα σημεια ηταν μεχρι και 3 φορες πιο αργο...Και φυσικα δεν ειχε παρομοιες ταχυτητες με την .net version αλλα υποδεεστερες.

    Αυτες οι πλατφορμες, καλως η κακως, σου δινουν πολλα πραγματα αλλα σου παιρνουν και Κατι πισω: το performance. Δεν μπορεις να απαιτεις να εχει near C++ execution μια ιστορια που λεγεται CLR, που μπορει για μενα να ειναι παρα πολυ καλα στημενη αλλα δεν ειναι C++ (ξαναλεω σε επιπεδο performance). Φυσικα, και το .net αλλα και την Java, τους βολευει αφανταστα το ισχυρο hardware που υπαρχει πλεον.

    Αυτος ειναι και ενας απο τους λογους που πλεον η C++ ειναι σε decline ολο και περισσοτερο. Αν συνδυασεις δυναμη και παραγωγικοτητα στη C# π.χ., δεν γυριζεις πισω...Ακομα και το COM Που ειχα λατρεψει, τωρα μου φαινεται αιωνες πισω.

    Δεν εχει σχεση το οτι το .net ειναι νεωτερο, ισα-ισα που η Java ειναι πιο ωριμη και θα επρεπε να ειναι καλυτερα τα πραγματα εκει, δεν ειναι ομως.
    Κι αυτο γιατι ακομα συνεχιζουν να παιρνουν λαθος αποφασεις, κοιτα πως εχει implementαρει η java 1.5 τα Genercis και θα καταλαβεις τι εννοω...

    Software Engineer, specializes in Microsoft .net/C#, COM, Sql Server and now Python.
  •  24-11-2004, 20:24 512 σε απάντηση της 283

    Re: .NET και ταχύτητα - Το Paint.NET

     objectref wrote:

    Δεν εχει σχεση το οτι το .net ειναι νεωτερο, ισα-ισα που η Java ειναι πιο ωριμη και θα επρεπε να ειναι καλυτερα τα πραγματα εκει, δεν ειναι ομως.
    Κι αυτο γιατι ακομα συνεχιζουν να παιρνουν λαθος αποφασεις, κοιτα πως εχει implementαρει η java 1.5 τα Genercis και θα καταλαβεις τι εννοω...


    Εισαι λιγο αδικος μιας και το .Νετ υπαρχει ζει και αναπτυσεται για μια μονο πλατφορμα ..που μαλιστα την φιαχνei  η ιδια εταιρια -> Microsoft !
    Το Μονο προς το παρον το αφηνω εξω μιας και δεν εχε ολοκληρωθει ..και δεν ειναι ωριμο!Ειναι πολυ ευκολο λοιπον να κανεις ενα γρηγορο περιβαλλον για μια συγκεκριμενη πλατοφορμα που εσυ φιαχνεις και ξερεις καλά τα μυστικα της. Οταν η Microsoft βγαλει η ιδια..και χρηματοδοτησει με το RnD της την υλοποιηση για 3-4 λειτουργικα παραλληλα τοτε μπορουμε να πουμε οτι θα εναι δικαιο ενα τετοιο σχολιο!


    Τα generics της Java ειναι πραγματι ασχημα! Δυστηχως δεν ειναι παντα ευκολο να κανεις τοσες αλλαγες σε μια γλωσσα που εχει ηδη καποια χρονια πανω της...και να προσπαθησεις σε καποιο βαθμο να την κρατας ιδια..για να μην προκληθουν διαταραχες με την υπαρχουσα υποδομη/κωδικα/ και γνωστικο πεδιο! Απο την αλλη ομως η C# δεν ηταν αυτη που δανειστικε κατα 99% την συνταξη της Java...αρα πατησε στην πολυ ευστοχη και εξυπνη αρχικη της συνταξη; Καταλαβαινεις οτι δεν βγαινουν παντα ολες οι ιδεες σε καλο.με την εννοια..οτι κατι μπορει να υλοποιηθει σωστα..και με επιτυχια κατι αλλο οχι και τοσο καλα!

    οσο για τα Benchmrks πιστευω οτι γενικα υπαρχει ενα παιχνιδι εντυπωσεων. Οσαν ειναι με χορηγια της Sun πανε καλα με τα δικα της ...οσα ειναι της MS πανε καλα με τα δικα της..μαλλον παιχνιδι εντυπωσεων για προσπαθειες και υλοποιησεις που μπορουν να χαρακτηριστουν ιδεατες..και ποτε μα ποτε δεν μπορουν να αντικατοπρισουν μια πραγματικη κατασταση.

    αλλα μιας και το εφερε η κουβεντα θυμαμαι ενα απο αυτα τα τεστ οπου η Microsoft ετρεχε το Pet shop με stored procedures στον SQL server ενω το αντιπαλο δεος δεν εκανε κατι αναλογο! φυσικα αντοιστιχα κολπα θα εχουν γινει ισως και στις Sun τα παραδειγματα. Καποιοι καποτε ειχα προσπαθησει  να κανουν μια ....ουδετερη προσεγγιση 'themiddlewarecompany' αλλα παντα στις προσπαθειες τους εβλεπες οτι μια φορα ηταν ..χορηγος η MS την αλλη η Sun.

    Java Hellenic User Group
    www.jhug.gr
  •  24-11-2004, 22:47 513 σε απάντηση της 283

    Re: .NET και ταχύτητα - Το Paint.NET

    Θα ξεκινήσω την απάντηση ανάποδα.

    Το ότι η πρώτη υλοποίηση του Pet shop δεν χρησιμοποιούσε stored procedures είναι πρόβλημα της υλοποίησης αν και δεν ήταν το μόνο. Την εποχή που δημιουργήθηκε υπήρχε η αντίληψη ότι είναι προτιμέτερη η "φορητότητα" του κώδικα σε SQL σε σχέση με την απόδοση, ότι τα entity Java Beans ήταν καλή ιδέα, το μέλλον είναι τα distributed objects, όλες οι εφαρμογές μπορούν να τρέξουν σαν ASP/JSP/CGI web εφαρμογές και πολλά άλλα ευχάριστα. Τα ίδια προβλήματα υπήρχαν (και υπάρχουν) ακόμα σε υλοποιήσεις είτε είναι COM+, Enterprise Services ή EJB. Είναι προβλήματα της υλοποίησης και όχι της πλατφόρμας. Η επόμενη υλοποίηση του Pet shop διόρθωσε τα λάθη αυτά και πέτυχε αντίστοιχη απόδοση με το Pet Shop.Net.
        Αντίθετα, οι πιο αποτελεσματικές υλοποιήσεις χρησιμοποιούν λέξεις όπως stateless, message-passing, queued. Τα distributed objects δείνουν τη θέση τους στα web services και το ελαφρώς procedural μοντέλο τους. Η χρήση dynamic SQL και οι cursors θεωρούνται η ρίζα του κακού από όποιον ξέρει τη διαφορά της με τα stored procedures (όχι, τα stored procedures ΔΕΝ είναι χρήσιμα επειδή περιέχουν 3 κιλοτόνους κώδικα, είτε είναι Java είτε Τ-SQL!).
       Είναι θανάσιμη πλάνη να ρίχνει κανείς το φταίξιμο στην πλατφόρμα, γιατί έτσι δεν πρόκειται ποτέ να διορθώσει τα λάθη της υλοποίησής του.
       
        Διάλειμα: Ακούσατε ποτέ να λένε ότι ένα report στην Oracle κάνει μέρες ενώ σε SQL (οτιδήποτε) κάνει δευτερόλεπτα? Αυτά συμβαίνουν πραγματικά, όταν γίνεται κακή σχεδίαση με παλιές εκδόσεις του form designer, που παράγουν κιλά dynamic sql και cursors.

    Σύνταξη: Κι εγώ που νόμιζα ότι και οι δύο γλώσσες αντιγράψανε τη C++! Ακόμα και στον τρόπο που συντάσσονται τα templates! Αλλά ... τί με νοιάζει?    
        Μεγαλύτερη σημασία έχουν οι σημαντικές διαφορές του memory model από C++ σε Java σε C# παρά ανούσιες αναφορές στη σύνταξη! (Δείτε και τη συζύτηση για το singleton). Ομοίως οι σημαντικές διαφορές μεταξύ templates και generics.

    Generics: Εγώ τα ξέρω σαν templates από την C++, τώρα τί μου λέτε εσείς όλοι για generics! Εγώ θέλω να φτιάξω policies όπως τα περιγράφει ο Alexandrescu, να έχω template specialization και όλα τα καλά της C++! 
        Παρότι τα generics και στις δύο γλώσσες φαίνονται όμοια με την C++, έχουν αρκετές διαφορές με αποτέλεσμα και οι δύο γλώσσες να ξεκινάνε ουσιαστικά από την αρχή σε αυτό τον τομέα. Αν βάλει κανείς και τις διαφορές στο memory model, τον τρόπο δημιουργίας των αντικειμένων και άλλες σημαντικές αλλά αφανείς διαφορές, το αν το runtime καταλαβαίνει από generics είναι μάλλον δευτερεύον.
       Ή μήπως όχι? Μου φαίνεται ότι ο τρόπος που δουλεύουν τόσο τα generics όσο και τα attributes θα παίξουν μεγάλο ρόλο σε σημεία που δεν το περιμέναμε. Τα aspects είναι το απλό και τετριμμένο παράδειγμα.
      Απλά απορώ που πήρε ΤΟΣΟ καιρό στη Java να αποκτήσει generics, όταν τα templates στη C++ υπάρχουν ... αιώνες!

     Τέλος τα περί πλατφόρμας: Αν ίσχυε ότι το .NET είναι γρήγορο επειδή η Microsoft ξέρει κάποια κρυφά μυστικά, γιατί δεν είναι και η Java το ίδιο γρήγορη στο Solaris?
    Ή μήπως φταίει το ότι η Sun επίτηδες δεν έδωσε σημασία στο VM για Windows? Και όχι μόνο? Αυτός δεν είναι και ο λόγος που πριν από χρόνια η IBM ξεκίνησε να φτιάχνει δικό της VM?
        Όσο για το R&D, η Microsoft αναπτύσσει το .NET εδώ και 6-7 χρόνια. Το ότι η σύνταξη της C# μοιάζει με τη Java δε σημαίνει ότι και τα VM είναι τα ίδια.
        Όπως και να έχει, όταν προσπαθείς να κάνεις κάτι που τρέχει σε πολλά λειτουργικά, αυτό αναγκαστικά θα έχει συμβιβασμούς. Είτε θα πιο αργό και λιγότερο ευέλικτο από μια υλοποίηση ειδικά για το λειτουργικό, είτε θα περιέχει υλοποιήσεις για όλα τα γνωστά λειτουργικά. Μόνο γνωστή φωτεινή εξαίρεση, η Standard Template Library της C++, η οποία κατάφερε να τρέχει παντού και να είναι και γρήγορη. Αλλά δεν είναι thread-safe γιατί ΟΛΑ τα λειτουργικά διαφέρουν μεταξύ τους στο πως συμπεριφέρονται τα threads, ακόμα και από έκδοση σε έκδοση (Windows ΝT σε 2000, HP-UX 10 σε 11 και άπειροι άλλοι συνδιασμοί).

        Τελικά, επιλέγεις το συμβιβασμό σου ανάλογα με το τί σύστημα φτιάχνεις. Χρειάζεσαι συμβατότητα με όλες τις πλατφόρμες? C++. Ευκολία προγραμματισμού σε πολλές πλατφόρμες? Η Java είναι μια λύση. Δουλεύεις με Windows? .ΝΕΤ.


    Υ.Γ. Σε όλο το post έμπλεξα την Java-πλατφόρμα με τη Java-γλώσσα, όπως και με τη C#/.ΝΕΤ. Το σφάλμα είναι τραγικό και οδηγεί σε άπειρες παρανοήσεις. Αλλά αν προσπαθούσα να κρατήσω τα πράγματα καθαρά, το post θα είχε μέγεθος κάτι MB!

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  25-11-2004, 00:06 517 σε απάντηση της 283

    Re: .NET και ταχύτητα - Το Paint.NET

     pkanavos wrote:
    Θα ξεκινήσω την απάντηση ανάποδα.

    Το ότι η πρώτη υλοποίηση του Pet shop δεν χρησιμοποιούσε stored procedures είναι πρόβλημα της υλοποίησης αν και δεν ήταν το μόνο. Την εποχή που δημιουργήθηκε υπήρχε η αντίληψη ότι είναι προτιμέτερη η "φορητότητα" του κώδικα σε SQL σε σχέση με την απόδοση, ότι τα entity Java Beans ήταν καλή ιδέα, το μέλλον είναι τα distributed objects, όλες οι εφαρμογές μπορούν να τρέξουν σαν ASP/JSP/CGI web εφαρμογές και πολλά άλλα ευχάριστα. Τα ίδια προβλήματα υπήρχαν (και υπάρχουν) ακόμα σε υλοποιήσεις είτε είναι COM+, Enterprise Services ή EJB. Είναι προβλήματα της υλοποίησης και όχι της πλατφόρμας. Η επόμενη υλοποίηση του Pet shop διόρθωσε τα λάθη αυτά και πέτυχε αντίστοιχη απόδοση με το Pet Shop.Net.
        Αντίθετα, οι πιο αποτελεσματικές υλοποιήσεις χρησιμοποιούν λέξεις όπως stateless, message-passing, queued. Τα distributed objects δείνουν τη θέση τους στα web services και το ελαφρώς procedural μοντέλο τους. Η χρήση dynamic SQL και οι cursors θεωρούνται η ρίζα του κακού από όποιον ξέρει τη διαφορά της με τα stored procedures (όχι, τα stored procedures ΔΕΝ είναι χρήσιμα επειδή περιέχουν 3 κιλοτόνους κώδικα, είτε είναι Java είτε Τ-SQL!).


    Πολυ λογος για το τιποτα! το θεμα ειναι οτι το τοτε τεστ το οποι αναφερθηκες ειχε την διαφορα αυτη ...και δημιουργηθηκε ενα ολοκληρο θεμα .. απλα το ανεφερα..γιατι μαλλον το ειχε ξεχασει...Stick out tongue

       


    Σύνταξη: Κι εγώ που νόμιζα ότι και οι δύο γλώσσες αντιγράψανε τη C++! Ακόμα και στον τρόπο που συντάσσονται τα templates! Αλλά ... τί με νοιάζει?    
        Μεγαλύτερη σημασία έχουν οι σημαντικές διαφορές του memory model από C++ σε Java σε C# παρά ανούσιες αναφορές στη σύνταξη! (Δείτε και τη συζύτηση για το singleton).

    Διαφωνω εχωντας γραψει κωδικα και στις 2 θεωρω οτι η συνταξη της Java ειναι μακραν πιο φιλικη! Και της C# ακομα πιο φιλικη! Αυτο ομως δεν αναιρει το γεγονος οτι η C# ειναι 99% αντιγραφη της Java...δεν μπορεις να πεις το ιδιο ομως με την σχεση C++ και Java. Σαφως βασικα συστατικα υπαρχουν..αλλα πως να το κανουμε δεν ειναι το ιδιο!
     Οσο αναφορα τα generics προς στιγμην δεν με ενδιαφερουν ζουσα μια χαρα και χωρις αυτα..απλα προγραμματιζα πιο προσεκτικα (defensive).



     Τέλος τα περί πλατφόρμας: Αν ίσχυε ότι το .NET είναι γρήγορο επειδή η Microsoft ξέρει κάποια κρυφά μυστικά, γιατί δεν είναι και η Java το ίδιο γρήγορη στο Solaris?

    Γιατι η εταιρια αυτη προσπαθει να υλοποιησει το VM σε 3 διαφορετικα συστημα
    Windows , Linux, Solaris . Νομιζω οτι εγινε κατανοητο τι ηθελα να πω...στο προηγουμενο ποστ


    Ή μήπως φταίει το ότι η Sun επίτηδες δεν έδωσε σημασία στο VM για Windows? Και όχι μόνο? Αυτός δεν είναι και ο λόγος που πριν από χρόνια η IBM ξεκίνησε να φτιάχνει δικό της VM?


    Οφειλω να σου υπενθυμισω ..αν δεν το εχεις προσεξει ηδη..οτι το VM για τα Windows ειναι μακραν το πιο εξελιγμενο και ταχυτερο ...απο τα υπολοιπα! Και αυτο φυσικα λογο ανταγωνισμου! Οσο αναφορα το linux οι κακες γλωσσες αναφερουν οτι η Sun επιλεγει να το εχει λιγο παραγκωνισμενο (αν και τον τελευταιο χρονο εχουμε εξελιξεις) ..για να προωθησει (το Solaris). Δεν μπορω να αγνοησω το γεγονος οτι και η Sun ειμαι μια εταιρια με μονοπωλειακες τακτικες....οπως η μαμα Microsoft!
       
      
    Προς θεου...σκοπο δεν εχω να δημιουργησω ακομα μερικα ποστ μεταξυ java και .net. Προσωπικα μου αρεσουν και τα 2 και συμφωνω μαζι σου οτι αναλογα με τις αναγκες και τις περιστασεις...ο καθενας επιλεγει το εργαλειο του.

    Java Hellenic User Group
    www.jhug.gr
  •  25-11-2004, 00:21 518 σε απάντηση της 283

    Re: .NET και ταχύτητα - Το Paint.NET

    Αν αξίζει να κριτικάρει κανείς τη Microsoft όσον αφορά το .NET είναι ότι έχει κυριολεκτικά αποψιλώσει το χώρο από τα μεγάλα ονόματα. Hejlsberg (Delphi), Lippman (C++), Hugunin (Jython), Gray (VERY large databases). 
      Άνθρωποι που έκαναν φοβερή δουλειά στον ελεύθερο χρόνο τους, πάνε στη Microsoft, αρχίζουν να ασχολούνται με τα πιο τρελά projects (ζηλεύω!) και μετά κάνουμε 3 χρόνια να τους ξανακούσουμε!
      Προσωπικά με ενοχλεί ότι ο Hugunin μπήκε στην ομάδα του CLR, και καθυστερεί να βγάλει τη νέα έκδοση της Python για .NET.

    Α, ναι! Και να μην πω τίποτα για όλες τις ωραίες γλώσσες που υπάρχουν στο www.microsoft.com/research και κάθονται στο .NET! Functional γλώσσες, η Cω και τα νέα μοντέλα concurrency, η asmL, ΦΤΑΝΕΙ ΠΙΑ! Αρχίζω να πιστεύω ότι δεν έχω ιδέα από πληροφορική! Θα βγεί τώρα και το Team System που θα ενθαρρύνει τη δημιουργία γλωσσών οπότε θα πάθω νευρικό κλονισμό!


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-12-2004, 15:28 568 σε απάντηση της 518

    Re: .NET και ταχύτητα - Το Paint.NET

    Δεν καταλαβαινω γιατι καθονται μερικοι και λενε οτι η C# π.χ. ειναι copy της Java και κατι αλλες τετοιες ιστοριες...
    Δεν ενδιαφερει κανεναν που κανει καριερα σε αυτη τη δουλεια αυτο το πραγμα.
    Και το Delphi 1 ηταν ενα copy της vb1, και η VB5 ηταν ενα copy του Delphi3 και ...
    Ειναι απειρα τα παραδειγματα ειτε σε πλατφορμες, ειτε σε programming languages ειτε ακομα και σε OS.

    Δεν ενδιαφερει κανενα τι ειναι copy και ποιανου. Ενδιαφερει ομως, το τι δυνατοτητες εχει μια πλατφορμα/γλωσσα προγραμματισμου, το τι απηχηση εχει γενικα στον κοσμο και τι απηχηση εχει ειδικα στη χωρα που ζει.
    Τι να το κανω εγω π.χ. αν η SuperDuper γλωσσα εχει τα καλυτερα χαρακτηριστικα απο ολες τις γλωσσες στον κοσμο αν χρησιμοποιειται μονο σε ενα χωριο στη...Λαπωνια ??

    Τι να κανω π.χ. μια non-microsoft πλατφορμα οταν παιρνω μια π.χ,. "Χρυση Ευκαιρεια" και στις μεγαλες αγγελιες βλεπω 10 για το χωρο μας μαι οι 8 να ζητανε microsoft programming languages και Sql Server ?

    Εκει ειναι το θεμα μας τελικα, πως θα χρησιμοποιησουμε κατι που ειναι δυνατο για να μας κανει την καριερα μας (και κατ'επεκταση τη ζωη μας...) οσο το δυνατον καλυτερη, ολα τα αλλα ας τ'αφησουμε σε φιλολογους...






    Software Engineer, specializes in Microsoft .net/C#, COM, Sql Server and now Python.
  •  06-12-2004, 16:14 569 σε απάντηση της 568

    Re: .NET και ταχύτητα - Το Paint.NET

     objectref wrote:
    Τι να κανω π.χ. μια non-microsoft πλατφορμα οταν παιρνω μια π.χ,. "Χρυση Ευκαιρεια" και στις μεγαλες αγγελιες βλεπω 10 για το χωρο μας μαι οι 8 να ζητανε microsoft programming languages και Sql Server ?


    Έχεις απόλυτο δίκιο.  Και αν το δούμε και από την πλευρά των εταιριών ανάπτυξης λογισμικού, για ποιο λόγο να μην επιλέξουν την Microsoft ως πλατφόρμα?

    Είναι εμφανές ότι:
    1. Υπάρχουν πολλοί περισσότεροι προγραμματιστές για VB και SQL Server.  Μου έφυγε ένας?  Βρίσκω εύκολα άλλον. (βέβαια, εδώ υπάρχει το πρόβλημα ότι όσο πιο πολλοί, τόσο περισσότερη σαβούρα, αλλά τι να κάνεις, δεν μπορείς να τα έχεις όλα δικά σου!). 
    2. Τα προϊόντα της Microsoft για τους developers δίνουν τεραστία έμφαση στην παραγωγικότητα.  Αυτό ακριβώς θέλουν οι εταιρίες!  Παραγωγικότητα - όχι κουφές δυνατότητες!
    3. Help, books online, MSDN, communities. Δεν νομίζω να χρειάζεται να πω περισσότερα.  Μακράν το καλύτερο documentation που υπάρχει (είτε προέρχεται από την Microsoft, είτε από το community).  Τι σημαίνει αυτό για τις εταιρίες?  Μεγαλύτερη παραγωγικότητα (σας θυμίζει κάτι?)

    Τι με νοιάζει λοιπόν (σαν εταιρία) αν η τάδε πλατφόρμα ή η τάδε γλώσσα έχει 8,000 παραπάνω δυνατότητες, ή είναι fully object-oriented (μιλάω για παλαιότερα που είχαμε VB6 εμείς οι κατώτεροι).  Αν πραγματικά τις έχω ανάγκη, τότε ναι, να πάω σε άλλη πλατφόρμα / γλώσσα.  Στις περισσότερες περιπτώσεις όμως, δεν τις έχω ανάγκη.  Και τότε είναι που τα business κριτήρια υπερτερούν των τεχνικών, και γι αυτό το λόγο η Microsoft εδώ και χρόνια, παρόλο που πολλές φορές έχει τεχνικά κατώτερα προϊόντα, είναι μπροστά.

    Τον περισσότερο καιρό, οι ανταγωνιστές τις Microsoft αναλώνονται στο να γκρινιάζουν και να προσπαθούν με χίλιους δυο τρόπους να χτυπήσουν την Microsoft (συνήθως νομικά).  Αν κάποια στιγμή σοβαρευτούν και δουν το προφανές (ότι δηλαδή η Microsoft δίνει στην αγορά των developers αυτό που θέλει - ψηλότερη παραγωγικότητα), τότε ίσως να μπορέσουν να την χτυπήσουν.  Μέχρι τότε, θα είμαστε εμείς εδώ και θα λέμε τα δικά μας!

    Patrick
  •  06-12-2004, 16:25 570 σε απάντηση της 569

    Re: .NET και ταχύτητα - Το Paint.NET

     patrick wrote:
     objectref wrote:
    Τι να κανω π.χ. μια non-microsoft πλατφορμα οταν παιρνω μια π.χ,. "Χρυση Ευκαιρεια" και στις μεγαλες αγγελιες βλεπω 10 για το χωρο μας μαι οι 8 να ζητανε microsoft programming languages και Sql Server ?


    Έχεις απόλυτο δίκιο.  Και αν το δούμε και από την πλευρά των εταιριών ανάπτυξης λογισμικού, για ποιο λόγο να μην επιλέξουν την Microsoft ως πλατφόρμα?

    Είναι εμφανές ότι:
    1. Υπάρχουν πολλοί περισσότεροι προγραμματιστές για VB και SQL Server.  Μου έφυγε ένας?  Βρίσκω εύκολα άλλον. (βέβαια, εδώ υπάρχει το πρόβλημα ότι όσο πιο πολλοί, τόσο περισσότερη σαβούρα, αλλά τι να κάνεις, δεν μπορείς να τα έχεις όλα δικά σου!). 
    2. Τα προϊόντα της Microsoft για τους developers δίνουν τεραστία έμφαση στην παραγωγικότητα.  Αυτό ακριβώς θέλουν οι εταιρίες!  Παραγωγικότητα - όχι κουφές δυνατότητες!
    3. Help, books online, MSDN, communities. Δεν νομίζω να χρειάζεται να πω περισσότερα.  Μακράν το καλύτερο documentation που υπάρχει (είτε προέρχεται από την Microsoft, είτε από το community).  Τι σημαίνει αυτό για τις εταιρίες?  Μεγαλύτερη παραγωγικότητα (σας θυμίζει κάτι?)

    Τι με νοιάζει λοιπόν (σαν εταιρία) αν η τάδε πλατφόρμα ή η τάδε γλώσσα έχει 8,000 παραπάνω δυνατότητες, ή είναι fully object-oriented (μιλάω για παλαιότερα που είχαμε VB6 εμείς οι κατώτεροι).  Αν πραγματικά τις έχω ανάγκη, τότε ναι, να πάω σε άλλη πλατφόρμα / γλώσσα.  Στις περισσότερες περιπτώσεις όμως, δεν τις έχω ανάγκη.  Και τότε είναι που τα business κριτήρια υπερτερούν των τεχνικών, και γι αυτό το λόγο η Microsoft εδώ και χρόνια, παρόλο που πολλές φορές έχει τεχνικά κατώτερα προϊόντα, είναι μπροστά.

    Τον περισσότερο καιρό, οι ανταγωνιστές τις Microsoft αναλώνονται στο να γκρινιάζουν και να προσπαθούν με χίλιους δυο τρόπους να χτυπήσουν την Microsoft (συνήθως νομικά).  Αν κάποια στιγμή σοβαρευτούν και δουν το προφανές (ότι δηλαδή η Microsoft δίνει στην αγορά των developers αυτό που θέλει - ψηλότερη παραγωγικότητα), τότε ίσως να μπορέσουν να την χτυπήσουν.  Μέχρι τότε, θα είμαστε εμείς εδώ και θα λέμε τα δικά μας!



    Απο τα πιο σωστα posts που εχω διαβασει...
    Συμφωνω απολυτα κι εγω μαζι σου. Η microsoft, σε μερικα θεματα (ειδικα παλιοτερα) παντα εχανε σε ποιοτητα, θυμιζω πιο παλια την Borland και το Delphi που για μενα, ειναι οτι καλυτερο εχω δει ποτε σε αυτη την κατηγορια...
    Θυμιζω επισης το C++ Builder, ενα απο τα καλυτερα C++ implementations και IDEs που εχουν βγει, και φυσικα ανωτερο απο την τοτε Visual C++ που μονο Visual δεν ηταν...

    Αλλα, δυστηχως, αυτα τα προιοντα  τα εφτιαξε η Borland, μια εταιρεια (εξηγω για να μην παρεξηγηθω...) που ειχε τρομακτικα ελαχιστο ποσοστο επηρειας στον κοσμo μολονοτι ειχε και εχει ακομα φανατικους οπαδους.
    Δυστηχως το "go with the flow" μαλλον ισχυει στη δουλεια μας.

    Οσο για τις "παραπανω δυνατοτητες" που μπορει να ειχε καποια αλλη πλατφορμα/γλωσσα, φαντασου τωρα αν την εχεις η οχι αναγκη απο τη στιγμη που η Microsoft εγινε ακομα καλυτερη απο τον ανταγωνισμο...


    happy coding!
    Software Engineer, specializes in Microsoft .net/C#, COM, Sql Server and now Python.
  •  16-12-2004, 23:10 658 σε απάντηση της 313

    Cool [H] Re: .NET και ταχύτητα - Το Paint.NET

    Καταρχάς χαίρεται και συγχαρητήρια για το site, είμαι νέος αναγνώστης. Πολύ καλό και εις ανώτερα!

    Ασχολούμαι επαγγελματικά και στον τομέα του προγραμματισμού και έχω εμπειρία σε γλώσσες οπως VB / LotusScript, ASP, PHP, Java και C++ (λίγο). Με το .net δεν εχω ασχοληθεί καθόλου γιατί α) είχα αρχίσει με την Java από καιρό και δεν θέλω να ξεκινήσω να μαθαίνω ένα νέο framework πριν εμβαθύνω στο υπάρχον και β) αντιπαθώ τις τακτικές της Microsoft γενικότερα.. Πάντως προσπαθώ να ενημερώνομαι και για τις εξελίξεις απο "εδώ μεριά" γιατί ποτέ δεν ξέρεις Wink

    Απαντώ στον φίλο objectref στο τελευταίο σχόλιο του περί java 1.5 και generics. Λοιπόν αντίθετα με μερικές "αυθεντίες" και "παπαγάλους" που κατακρίνουν  την υλοποίηση της SUN, εγώ είμαι *ευγνώμων* που αποφάσησαν να πάρουν αυτό το δρόμο, παρά  να τα φορτώσουν - πάλι όλα - στον Run-Time-Γάιδαρο οπως παει να κάνει η Microsoft.

    Άσχετο παιδιά αλλά έχω μια απορία με το .net. Ο bytecode κώδικας ξέρω οτι μετατρέπεται σε native οταν εκτελείται. Αυτό γίνεται κάθε φορά που τρέχεις ένα πρόγραμμα ή μόνο την πρώτη φορά;

    Ευχαριστώ και πάλι μπράβο για τη σελίδα σας...
  •  17-12-2004, 01:51 662 σε απάντηση της 658

    Re: .NET και ταχύτητα - Το Paint.NET

    Η "μετατροπή" για την οποία μιλάς αν κατάλαβα καλά, είναι αυτό που λέμε jit compile, όταν μετατρέπεται ο MSIL κώδικας (το πρωτογενές αποτέλεσμα του compilation - ονομάζεται PE File (Portable Executable File)) σε native κώδικα... Το jit compile συμβαίνει σίγουρα την πρώτη φορά και μετά *μπορεί* να ξανασυμβεί για διάφορους λόγους, όμως δεν είναι κάτι που συμβαίνει συχνά. Αν εννοείς αυτό ως run-time-γάιδαρο τότε δεν είναι τα πράγματα έτσι...

    Οι λόγοι που γίνεται compile την πρώτη φορά είναι ότι ο παραγόμενος native κώδικας είναι προσαρμοσμένος ακριβώς για τον τύπο CPU του μηχανήματος, τον αριθμό των CPU του μηχανήματος (σημαντικό πράγμα για ζητήματα threading) και τέλος γιατί ενδεχομένως μέσα στον κώδικα να υπάρχουν αναφορές σε θέσεις μνήμης που σχετίζονται με μεταβλητές ή μεθόδους (βλ. AddressOf). Όλα αυτά έχουν ως αποτέλεσμα καλύτερο performance.

    Μπορείς επίσης να προετοιμάσεις τον τελικό native κώδικα με το NGen utility, αλλά πραγματικά για να μπεις στον κόπο θα πρέπει να έχεις ιδιαίτερο κέρδος ως προς το delay λόγω του jit compile.

    Ένα παράδειγμα για jit compile κατά τη διάρκεια ζωής μιας εφαρμογής είναι αν κάνουμε re-bind κάποια νέα dlls αντικαθιστώντας τα παλιά. Άλλο ένα πιο εξωτικό παράδειγμα είναι να πάρεις το exe αρχείο από ένα σύστημα και να το μεταφέρεις και εκτελέσεις σε άλλη πλατφόρμα (πχ linux - βλ. Project Mono)


    Vir prudens non contra ventum mingit
  •  17-12-2004, 11:11 669 σε απάντηση της 662

    Re: .NET και ταχύτητα - Το Paint.NET

    Ωραία, κάνω reply στον εαυτό μου τώρα! Smile

    Λοιπόν, το έψαξα λίγο παραπάνω το θέμα και βρήκα μερικά ενδιαφέροντα πραγματάκια (άλλο πράγμα να γράφεις το post το βράδυ στις 1.50 και άλλο το πρωί βρε παιδί μου...). Επίσης ευκαιρία νε με διορθώσω:

    Το jit compilation συμβαίνει όταν τρέξει το assembly (assembly στο .NET ονομάζεται η μονάδα του εκτελέσιμου κώδικα, σαν να λέμε τα exe και τα DLL). Αυτό το jit compilation είναι ανά μέθοδο, δηλαδή μόλις χρησιμοποιείται μία μέθοδος που δεν έχει γίνει compile τότε γίνεται και όλες τις υπόλοιπες φορές που καλείται η ίδια μέθοδος χρησιμοποιείται το ίδιο αποτέλεσμα του προηγούμενου compilation. Άρα όχι, δεν μιλάμε για interpreter.

    Τώρα, αυτός ο native κώδικας δεν αποθηκεύεται κάπου ώστε να επαναχρησιμοποιηθεί αλλά ξαναγίνεται jit-compile όταν ξανατρέξουμε το assembly κάποια άλλη φορά. Άρα ναι, τα assemblies γίνονται jit-compile κάθε φορά που τρέχουν (αυτό είναι εύκολο να το διαπιστώσει κανείς χρησιμοποιώντας το performance monitor και διαβάζοντας τον μετρητή ".ΝΕΤ CLR Jit - # of Methods Jitted")

    Αυτό που δεν ήξερα είναι οτι υπάρχουν δύο εκδόσεις του jit compiler. Η πρώτη, απλά μετατρέπει κάθε MSIL instruction σε αντίστοιχο native κώδικα αλλά δεν κάνει καθόλου optimization και προορίζεται για πλατφόρμες όπου δεν υπάρχουν διαθέσιμα πολλά resources.

    Η δεύτερη, η έκδοση που όλοι ξέρουμε, κάνει on-the-fly optimization στον κώδικα που παράγει (βλ. προηγούμενο Post μου) και επιπλέον και κάποια άλλα πραγματάκια (βλ. για παράδειγμα dynamic properties, assembly probbing, type safety, security restrictions, κλπ).

    Πάντως, γενικά αν θα παίξεις λίγο με το development σε .ΝΕΤ θα δεις αφ'ενός ότι το performance cost δεν είναι τόσο φοβερό όσο νομίζεις και το κέρδος από το optimization είναι μεγαλύτερο και αφ'ετέρου ότι μέσω του jit-compilation γίνονται διαθέσιμα τα features που ανέφερα.


    Vir prudens non contra ventum mingit
  •  17-12-2004, 11:26 670 σε απάντηση της 669

    Re: .NET και ταχύτητα - Το Paint.NET

    Ξέρω ότι το  CLR συμπεριφέρεται διαφορετικά ανάλογα με το αν τρέχει σε server ή client, τουλάχισον όσον αφορά τη διαχείριση της μνήμης. Μήπως έχει επίδραση και στο JIT?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Σελίδα 1 από 3 (41 εγγραφές)   1 2 3 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems