Post by MichaÅ "Khorne" RzechonekPost by HoppkeSą. Emulują API/ABI windows :)
WINE: Wine Is Not an Emulator
Oksymorony? Proszę bardzo: Microsoft Works.
Post by MichaÅ "Khorne" RzechonekEmulator jako taki pracuje na innym poziomie - tlumaczy binarne rozkazy
uruchamiajac je na wirtualnej maszynie.
To tylko jedna z definicji, na dodatek tych z marginesu pola semantycznego.
Według IEEE emulator to "A device, computer program, or system that accepts
the same inputs and produces the same outputs as a given system." - nie ma
tu nic o wirtualnych maszynach czy nawet binarnych rozkazach, to czysta
definicja emulacji bez podciągania pod jakieś konkretne rozwiązanie.
A to wycinki z Wikipedii:
"The most common form of emulation is that of a software emulator, a piece of
computer software that allows certain computer programs to run on a platform
(computer architecture and/or operating system) other than the one they were
originally written for. It does this by "emulating", or reproducing, the
behavior of one type of computer on another by accepting the same data,
executing the same programs, and achieving the same results."
-- Wypisz-wymaluj WINE.
"Most emulators just emulate a hardware architecture (...) Instead of full
emulation of the hardware, a compatibility layer may suffice. This
translates system calls for the emulated system into system calls for the
host system."
-- No proszę, więc _większość_ emulatorów emuluje całą "hardware
architecture", ale wykonywana przez _mniejszość_ emulatorów translacja
API/ABI innego systemu jest również emulacją.
Post by MichaÅ "Khorne" Rzechonek"Some people argue that since Wine introduces an extra layer above the system a
Windows application will run slowly. It is true that, in theory, Windows
applications that run in Wine or are recompiled with Winelib will not be able to
achieve the same performance as native Unix applications. But that's theory. In
practice you will find that a well written Windows application can beat a badly
written Unix application at any time. The efficiency of the algorithms used by
the application will have a greater impact on its performance than Wine"
Dużo słów, zero treści. "The efficiency of the algorithms used by the
application will have a greater impact on its performance than Wine" - też
mi odkrycie. Oczywiście, że tak będzie. Tak samo wpływ optymalizacji
kompilatora będzie znikomy w porównaniu z dobrze dobranymi algorytmami
w samym kodzie. Tylko co z tego? Czy taki StarCraft po przejściu na Wine
nagle zacznie używać lepszych algorytmów niż robił to pod Windows? Nie? Więc
po cholerę o tym wspominają? Chcą odwrócić uwagę czytelnika?
Albo to: "In practice you will find that a well written Windows application
can beat a badly written Unix application at any time." - truizm. Jasne, że
każdy sensownie napisany windowsowy program będzie pod Wine działał
szybciej, niż bardzo spieprzony program linuksowy. To konsekwencja znaczenia
algorytmów programu dla jego wydajności. Ale co to ma do rzeczy? Czego to
dowodzi? Że można spieprzyć linuksowy program tak, że będzie działał wolniej
niż coś pod Wine? Też mi odkrycie. Jak to się ma do spowalniania wykonywania
Windowsowej aplikacji pod Wine?
Cały akapit który zacytowałeś jest ślicznym przykładem reklamowego
bullshitu. Zaczyna się jeszcze sensownie, ale od słów "But that's theory"
padają same frazesy które mają się już nijak do początkowego zarzutu "a
Windows application will run slowly". Zamiast tego wyciąga się "argumenty"
typu "ale źle napisana aplikacja linuksowa będzie działać jeszcze wolniej!"
oraz "w sumie to i tak największe znaczenie mają algorytmy samego programu".
Świetnie, ale czy to w jakikolwiek sposób obala stwierdzenie, że warstwa
emulacji powoduje spowolnienie działania programu? NIE! :)
Post by MichaÅ "Khorne" Rzechonek"slow graphics due to unoptimized Wine code and X11 driver translation
performance loss". Wyjawszy niektore dosc wolno rysowane widgety, wszystkie
programy jakie uruchamialem chodza cacy (IE6, Dreamweaver, Photoshop, Flash)
E, to programy użytkowe, które większość czasu spędzają i tak w idle loops
albo na przeliczaniu rzeczy, które nie podlegają szczególnej translacji
(abstrakcyjny kod, przeliczenia arytmetyczne itp.).
Włącz sobie Fallouta. Albo StarCrafta. Jeśli miałbyś system typu "pod
Windows akurat wystarcza na te gry", to pod Wine miałbyś już śliczny efekt
przycinania. Obojętne jakimi reklamowymi sloganami epatują strony Wine,
warstwa emulacji musi powodować opóźnienia. Musi. To dodatkowy kod do
wykonania, a wykonywanie dowolnego kodu zabiera cykle procesora. Nikt mi nie
wciśnie kitu, że napisał warstwę tłumaczącą jedno API na drugie i warstwa ta
nie ma żadnego negatywnego "performance impact".
Identyczną prędkość uda się uzyskać tylko jeśli odkujesz te straty na czymś
innym, np. na natywnych szybszych podsystemach graficznych, szybszej
obsłudze wątków czy alokacji pamięci, albo po prostu dodając szybszy
procesor. Ale nieczęsto się to udaje.
--
? Chcesz wiedzieć co Hoppke jadł na śniadanie? Nie?
? A może interesuje Cię co porabia jego urojona wiewiórka? Też nie?
Mimo wszystko obejrzyj ten jedyny w swoim rodzaju ChangeBlog:
.°.°.°.°.°.°.: http://dobremiasto.net/~hoppke/ :.°.°.°.°.°.°.