Η συζήτηση για WPF και DirectX είναι σαν τη συζήτηση για .NET ή assembly. Αν μιλάς για το δεύτερο, μάλλον ψάχνεις για πράγματα που δεν σου δίνει το πρώτο ούτε κατά προσέγγιση. Εξάλλου η καθυστέρηση δεν είναι ένα απλό 3-5% καθώς με C++ και DirectX μπορείς να κάνεις πράγματα που απλά δεν γίνονται με το .NET ή το WPF. Εκεί μιλάμε για τάξεις μεγέθους στην διαφορά ταχύτητας.
Ένα από αυτά που δεν γίνονται και δεν έχει νόημα να γίνουν είναι η εκμετάλλευση των SSE εντολών των επεξεργαστών για ταυτόχρονη επεξεργασία όγκου δεδομένων. Απλά και μόνο το marshalling μεταξύ managed και unmanaged κώδικα είναι τόσο μεγάλο ώστε να καταργεί οποιοδήποτε όφελος. Το ίδιο ισχύει και για την εκμετάλλευση των GPU για επεξεργασία. Μιλάμε για παράλληλη επεξεργασία σε επίπεδο ενός επεξεργαστή και thread, ούτε καν για multicore ή έστω και multithreaded κώδικα. Όταν έχεις να επεξεργαστείς 5Μ pixels (για παράδειγμα) 80 φορές το δευτερόλεπτο, για ώρες, το marshalling είναι εντελώς περιττό και απαράδεκτο.
Αυτός είναι και ο λόγος που η Microsoft έβγαλε το
Microsoft C++ AMP library για τη χρήση των GPU αλλά δεν πρόκειται να το βγάλει για .NET.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos