Rozważam napisanie nowej aplikacji GUI dla systemu Windows, gdzie jednym z wymogów jest to, że aplikacja musi być bardzo responsywna, szybka do załadowania i ma mały ślad pamięci.Wydajność aplikacji Qt vs. WinAPI/MFC/WTL/
Użyłem WTL dla poprzednich aplikacji, które stworzyłem z tego rodzaju wymogiem, ale jak używam .NET cały czas w mojej codziennej pracy WTL staje się coraz bardziej bolesne, aby wrócić. Nie jestem zainteresowany korzystaniem z .NET dla tej aplikacji, ponieważ wciąż brakuje mi wydajności większych .NETowych interfejsów użytkownika, ale jestem zainteresowany wykorzystaniem lepszej struktury C++ dla interfejsu użytkownika - jak Qt.
Przed rozpoczęciem staram się mieć pewność, że nie będę tego żałował na froncie wydajności.
A więc: czy Qt jest szybkie?
Postaram się zakwalifikować pytanie za pomocą przykładów tego, co chciałbym przybliżyć do dopasowania: Moja aktualna aplikacja WTL to Programmer's Notepad. Obecna wersja, nad którą pracuję, waży około 4 MB kodu dla 32-bitowej, wydanej kompilowanej wersji z pojedynczym tłumaczeniem językowym. Na nowoczesnym, szybkim komputerze ładowanie trwa 1-3 sekund, co jest ważne, ponieważ ludzie często go uruchamiają, aby uniknąć IDE itp. W 64-bitowym Win7, gdy edytujesz podczas. Możesz uruchamiać aplikację non-stop, pozostawić ją zminimalizowaną, cokolwiek i zawsze przeskakuje na nią natychmiast po przełączeniu się na nią.
Dla dobra argumentu powiedzmy, że chcę przenieść moją aplikację WTL do Qt na potencjalną, przyszłościową obsługę wielu platform i/lub znacznie łatwiejszy interfejs użytkownika. Chcę zbliżyć się, jeśli nie pasować do tego poziomu wydajności z Qt.
Uzgodnione, wydajność jest często zawyżona, a wymagania błędnie podane. Jednak, jak byś się czuł, gdyby Notepad miał 10 sekund na wczytanie zamiast mniej niż 1, a gdy przywróciłeś go z zminimalizowanej strony, potrzebował 10 sekund, aby wrócić do pamięci? Niektóre aplikacje wymagają szczególnej uwagi dotyczącej wydajności. –
Uzgodniono również, że cokolwiek innego niż natywny interfejs API będzie wrapper, ale są szybkie wrappery i powolne opakowania - Win Forms to powolne opakowanie, WPF to opakowanie po glacjalnym opakowaniu. Poszukuję opakowania, które pozostawia aplikację przyjemnie się używa - ramy powinny wykonać swoją pracę i zejść mi z drogi :) –
Cóż, Qt jest dobre. Przykłady, z których korzystam na co dzień: Skype ma dobrą wydajność. Opera jest jedną z szybszych przeglądarek internetowych. KDE jest przyjemnością w użyciu, szczególnie ze sprzętowym graficznym eye-candy. Oczekuj wydajności podobnej do MFC, a nie do WPF. Szybko się z nim rozwija, więc będziesz mieć więcej czasu na upuszczenie wąskich gardeł wydajności w swoim programie. –