Was ist die beste VM zum Entwickeln von WPF-Apps in OS X?

2679
MarqueIV

Alle meine Maschinen sind Macs (Mac Pro, MacBook Pro, MacBook Air und Mac Mini (und auch Apple TV 2.0! :)), aber für meinen Tagesjob entwickle ich .NET / WPF-Anwendungen. Normalerweise boote ich einfach in Boot Camp und entwickle das so, was natürlich gut funktioniert, aber manchmal muss ich gleichzeitig auf meiner Mac-Seite etwas anfangen, also habe ich sowohl VMware 3.1 als auch Parallels 6 gekauft Beide funktionieren jedoch auch auf meinem Mac Pro, bei dem ich für ein Upgrade auf die besseren Grafikkarten (die NVidia 8600s, glaube ich vs. die ATI-Karten) die WPF-Leistung bezahlte !!

Nun verwirrt mich das, da beide behaupten, dass sie nicht nur das hardwarebeschleunigte OpenGL 2.1, sondern auch das hardwarebeschleunigte DirectX 9 (VMware unterstützt angeblich DirectX 10!) Über ihre jeweiligen virtuellen Treiber unterstützt. Beide können sogar 3D-Spiele problemlos ausführen ein Fenster. Aber auch das einfache Ändern der Größe eines WPF-Fensters, das einen gekachelten Hintergrund hat, führt zu einigen HIDEOUS-Verhaltensweisen, die das Bild neu malen und skalieren. Es ist fast näher an dem, was Sie von RDP erwarten würden, geschweige denn ein reiner Software-Renderer (vergessene Beschleunigung von Hardware vollständig!)

Also ... kann mir jemand bitte sagen, dass WTF WPF anders ist? Noch wichtiger ist, wie kann ich die WPF-Leistung beschleunigen? Sollte ich zu VirtualBox wechseln, die auch DirectX unterstützt? Oder muss ich einfach die Kugel "byte" (sorry ... musste. Also mag ich Wortspiele! Danke Jon Stewart!) Und Boot Camp weiter nutzen?

5
Versuchen Sie es mit VirtualBox und sehen Sie, wie die Leistung ist. Rafe Kettler vor 13 Jahren 1
WPF verwendet DirectX und benötigt daher eine Hardwarebeschleunigung für die beste Leistung, die von VMs normalerweise nicht unterstützt oder virtualisiert wird. BoltClock vor 13 Jahren 4
Verwenden Sie einfach Boot Camp. Ich war noch nie ein großer Fan von der Virtualisierung eines Betriebssystems in einem anderen Betriebssystem. BoltClock vor 13 Jahren 0
Ich habe immer Probleme mit der WPF-Leistung in virtuellen Maschinen, wenn ich versuche, fantastische Effekte zu erzielen. Und das ist Dual Core i7, 8 GB Speicher und 120 GB SSD mit VirtualBox. vor 13 Jahren 0
@BoltClock, Wie ich bereits sagte und sowohl von VMware als auch von Parallels stark beworben wird, unterstützen sie * DirectX. Und wenn ich nur Boot Camp nutzen würde, hätte ich die Frage nicht gestellt. Wie gesagt, ich muss gleichzeitig OS X-Sachen verwenden. MarqueIV vor 13 Jahren 0
@ Dave, gut zu wissen. Jetzt muss ich keine Zeit mehr damit aufwenden, VirtualBox einzurichten. Ich verstehe nicht warum, wenn sie alle DirectX unterstützen, funktionieren sie nicht? ... oder braucht WPF DX10 oder neuer? (Ich weiß, dass VM und P DX9 unterstützen. Ich weiß nicht, welche VBox verwendet.) MarqueIV vor 13 Jahren 0
WPF * funktioniert * ohne DirectX; [es verwendet einen Rückfallmechanismus] (http://stackoverflow.com/questions/4384192/how-does-hardware-acceleration-work-with-wpf/4384591#4384591), um sich an die Konfiguration des aktuellen Systems anzupassen. Der Punkt ist jedoch, dass Sie keine WPF-Entwicklung * ohne DirectX-Unterstützung durchführen möchten. Die * ideale * Lösung ist die Verwendung von Boot Camp, der offensichtliche Nachteil besteht jedoch darin, dass Sie keine Mac OS X-Apps gleichzeitig ausführen können. Wählen Sie zwischen VMware und Parallels. entweder sind solide Kandidaten. Bewertungen und Vergleiche finden Sie online an anderer Stelle. Das ist ein Thema für diese Site. Cody Gray vor 13 Jahren 0
@Cody, ich weiß, dass WPF ohne DirectX funktioniert. Das habe ich nicht gefragt. Ich versuche, * gute * Leistung zu finden, nicht nur 'kann es gemacht werden'. Wie bereits oben erwähnt, habe ich bereits die neuesten Versionen von VMware und Parallels, und beide haben selbst für die einfachsten Dinge eine schlechte WPF-Leistung. Deshalb habe ich diese Frage gestellt. Ich frage mich, ob es Einstellungen / Optimierungen gibt, die ich vornehmen kann, oder vielleicht eine andere VM-Lösung, die insgesamt besser funktioniert als diese, da die Verwendung von Boot Camp keine reibungslose Erfahrung war, wenn man bedenkt, wie viel Hin- und Her ich zum Booten verwenden muss. weise. MarqueIV vor 13 Jahren 0
Unglücklicherweise nicht. Dafür gibt es keine Schaltfläche oder einen Schalter. Die Emulation ist nicht perfekt und Windows ändert ständig alle Regeln. Die meisten Emulatoren und sogar Virtualisierungssoftware unterstützen Aero Glass noch nicht. Es gibt einen großen Grund, warum ich nicht zu WPF gewechselt bin. Es ist unglaublich, wie viel reibungsloser das Zeichnen, die Größenänderung und andere Animationen in OS X im Vergleich zu Windows sind. Ein Jahrgang 2000 Blue & White G3 auf OS X läuft vor einigen Jahren auf meinem Windows-Rechner, und das sage ich als Windows-Entwickler. Ich wünschte, es wäre so ein einfacher Schalter! Cody Gray vor 13 Jahren 0
@studiohack, Sie haben meine Frage bearbeitet, um die Schreibweise von 'MacBook' so zu ändern, dass das 'b' in Kleinbuchstaben angezeigt wird. Dies ist falsch (siehe Vorderseite der Einheiten). Ich habe sie also geändert. MarqueIV vor 13 Jahren 0
FWIW, Virtualbox * unterstützt * DirectX - neben der Checkbox steht nur "experimentell". Alain Pannetier vor 13 Jahren 0
Und haben Sie eine Lösung für dieses Problem gefunden? Ich stehe hier vor dem gleichen Problem ... rdkleine vor 12 Jahren 0
Ich habe es vorerst aufgegeben. Könnte nicht gut genug in einer VM funktionieren, was wirklich überraschend ist, wenn man bedenkt, dass Portal 2 praktisch in einer VM ausgeführt werden kann, aber ich kann ein verdammtes Rechteck nicht reibungslos von einer Seite eines leeren Fensters aus animieren das andere. Ich liebe es, WPF zu programmieren, aber verdammt noch mal, haben sie die Implementierung nicht wirklich belastet. Javascript-Animationen in einer VM sind besser als diese! MarqueIV vor 12 Jahren 0

4 Antworten auf die Frage

1
Alec

Ich weiß, dass VMWare bestimmte Erweiterungen oder Treiber hat, die Sie installieren können, um die Leistung zu erhöhen. probiere die. Als umfangreicher Benutzer von VMs kann ihre Leistung nicht mit der nativen Geschwindigkeit übereinstimmen. gewöhne dich einfach daran. Ich habe versucht, in VMs zu programmieren, dann wurde ich satt und bekam einen anderen Computer, einen für Windows und einen für Linux.

Ich glaube, Sie beziehen sich auf die Treiber für die VM. Das trifft auf jede moderne VM zu. Was ich nicht bekomme, ist, dass 3D-Apps mit diesen Treibern problemlos ausgeführt werden, aber einfache WPF-Apps sind extrem abgehackt. Ich fange an zu finden, dass es mehr die schreckliche Umsetzung von WPF-Rendering durch MS ist, als der Client oder die Treiber, auf denen er läuft. Der WPF Deep Dive-Artikel zeigt, was für ein Chaos es wirklich ist. MarqueIV vor 12 Jahren 0
So sehr ich es hasse, dies zu sagen, ist die beste Lösung, einen Computer mit Fenstern zu bekommen. Andernfalls, wenn Sie RDP in Ihrer Box bei der Arbeit einsetzen können, wäre dies eine weitere fantastische Lösung. Alec vor 12 Jahren 1
Die Leistung von RDP ist mit WPF grausam. Und obwohl es gut wäre, eine andere Maschine zu bekommen, frage ich, welche virtuelle Lösung am besten ist (dh Produkt und Einstellungen), da ich damit arbeiten muss. Trotzdem danke. MarqueIV vor 12 Jahren 0
Leider denke ich, dass Sie Boot Camp weiter benutzen müssen Alec vor 12 Jahren 0
Boot Camp ist keine Option, da ich gleichzeitig in den Mac gebootet werden muss. Daher hier das Posting über eine VM. Danke trotzdem. MarqueIV vor 12 Jahren 0
0
Karthik

Versuche dies !!

Installieren und spielen Sie eines der neuesten PC-Spiele (Call of Duty, NFS usw.) auf Ihrer VM, da fast alle PC-Spiele DirectX verwenden. Diese Spiele sind der perfekte Test für Ihre Hardware und die zugrunde liegende Software.

Wenn die Spielerfahrung nicht gut war, sollte es Probleme mit VMware / Hardware geben. Wenn nicht, ist es wahrscheinlich ein Problem mit WPF. Ich erinnere mich, dass ich irgendwo gelesen habe, dass WPF einige bekannte Leistungsprobleme in der Citrix-Umgebung hat. Daher besteht die Möglichkeit, dass das Problem, mit dem Sie konfrontiert sind, auch damit zusammenhängt.

@PrinceCoder, ich habe keine PC-Spiele, die ich installieren kann, da ich kein Spieler bin. ABER ... dies ist ein 8-Core-Mac Pro mit 16 GB RAM und 2 High-End-NVidia-Karten (viel bessere Leistung als die Standard-ATIs), und alles ist (oder war, als ich diese 2 Jahre zurück gekauft habe) der Spitzenreiter . Wenn ich in Boot Camp gebootet bin, ist es selbst auf Quad-Monitoren glatt. Die Mac-Seite ist auch glatt wie Glas ... außer Windows läuft in einer VM. Ich habe die neuesten VMware- und Parallels-Treiber, also weiß ich, dass es auch nicht so ist. Ich bin mir nicht sicher, was es ist, aber es scheint, dass ich mit diesem Problem nicht alleine bin und beißt. MarqueIV vor 13 Jahren 0
@MarqueIV Einige aktuelle (ish) Spiele, z. B. America's Army, sind kostenlos. Daniel Beck vor 13 Jahren 1
0
Journeyman Geek

Ich denke, es gibt hier ein grundlegendes Missverständnis der VM-Technologie. Eine VM kann Informationen ohne physische Schichten niemals vollständig an physische Hardware weitergeben. Wenn Sie DX-Anwendungen ausführen, werden diese auf einer virtuellen Grafikkarte ausgeführt. Wenn Sie Glück haben, wird die Ausgabe durch Hardware beschleunigt (also direktes X -> virtuelle Grafikkarte -> opengl-> actual Grafikkarte) oder, wenn Sie Pech haben, eine Software emuliert (in diesem Fall läuft alles auf der CPU, was bei solchen Aufgaben natürlich nicht zu übertreffen ist - sonst würden wir keine Grafikkarten benötigen).

Kurz gesagt, Ihre ausgefallene Hardware tut nichts in Bezug auf das, was sich in der VM befindet. Das Starten von Videos ist wirklich die einzige Möglichkeit, Ihre Grafikkarten zu nutzen.

Re: "Kurz gesagt, Ihre ausgefallene Hardware tut nichts in Bezug auf das, was sich in der VM befindet" - Wenn das wahr wäre (was nicht der Fall ist, da sie ausdrücklich auf die Hardwarebeschleunigung hinweisen), dann würden 3D-Spiele ihr Gesicht verlieren Eine reine Software-Implementierung würde sie vollständig behindern. Trotzdem spielen sie ziemlich gut, sogar in einem Fenster, insbesondere weil sie hardwarebeschleunigt sind. Wieder ist es nur WPF, das Leistungsprobleme verursacht. Ich vermute, WPF macht etwas anderes als reines DX oder es sollte funktionieren. MarqueIV vor 13 Jahren 0
Ich glaube, ich habe herausgefunden, was das Problem ist ... es scheint, dass WPF immer noch zu viel mit der CPU zu tun hat, wenn es virtualisiert wird, obwohl die 3D-Teile an die beschleunigte Hardware übergeben werden, das Sperren und Synchronisieren zwischen CPU und GPU. Wenn Sie virtualisiert sind, beenden Sie einfach die Leistung. Kurz gesagt, sieht es nicht so aus, als würde es jemals eine Lösung geben, bis sie WPF "reparieren". http://jeremiahmorrill.com/2011/02/14/a-critical-deep-dive-into-the-wpf-rendering-system/ MarqueIV vor 13 Jahren 0
0
Web Habitat

Ich bin seit 27 Jahren Softwareentwickler. (Ja, damals, als es nur Text- und Farb-ASCII-Zeichen gab ...)

Heute bin ich ein Senior-Entwickler für Windows / Web / Mac und verwende meine Hauptcodierung auf einem MacBook Pro (mit zwei externen Monitoren - DVI und USB).

Ich mache zwar 95% meiner WINDOWS-Codierung (.NET) über Windows 7 auf Fusion (VMWare). Ich habe noch eine 100 GB Partition mit BootCamp.

Mit dem BootCamp? Sie wissen bereits warum, weil Sie mit einem VM / Emulator nicht die volle Videoleistung erzielen können.

Oh und großer Tipp --- Starten Sie Ihr Windows 7 BootCamp nicht über Fusion, auch wenn Sie sagen, dass Sie es können. Tatsächlich wird die Windows-7-Lizenz geboten, und Sie rufen Microsoft zur erneuten Registrierung an (da Sie darauf hingewiesen werden, dass es sich um eine illegale Kopie von Windows handelt ...).

Ich benutze meine Win7 64-Bit Boot Camp-Partition regelmäßig ohne Probleme mit VMware oder Parallels. Ja, Sie müssen Windows erneut registrieren, aber Sie müssen dies nur einmal tun, und MS wird es ohne Probleme aktivieren. Auch wenn Sie zwar keine * volle * Videoleistung in virtuellen Umgebungen erhalten, * können * Sie mit DirectX 3D-Spielen wirklich eine anständige Bildrate erzielen, so dass es keinen Grund gibt, etwas so einfaches wie eine Bildlaufliste oder eine Folienanimation in WPF beißen den Dreck so fest. Das ist nur eine schlechte Implementierung. MarqueIV vor 12 Jahren 0