Oprogramowanie do symulacji najprawdopodobniej jest związane z procesorem lub pamięcią . W przypadku takich obciążeń nie można nie zauważyć żadnej znaczącej różnicy między uruchomieniem kodu na „bare metal” lub wewnątrz WSL (lub innej warstwie zgodności lub maszynie wirtualnej, która korzysta z wykonania natywnego), ponieważ w każdym przypadku system operacyjny jest po prostu podczas gdy kod symulacyjny działa bezpośrednio na CPU.
Jednak możliwe jest również, że twoja symulacja jest przynajmniej częściowo związana z I / O, i tam mogą pojawić się różnice. Najwyraźniej WSL (obecnie) ma dość powolną warstwę interfejsu systemu plików, która może znacznie spowolnić dyskowe operacje we / wy. * To powiedziawszy, chociaż dyskowe operacje we / wy mogą być głównym wąskim gardłem dla wielu rodzajów zadań przetwarzania danych masowych, „symulacja” zwykle nie powinien spędzać większości czasu na czytaniu i pisaniu plików. Jeśli tak, możesz rozważyć uruchomienie go z dysku RAM (np. Tmpfs w natywnym ** Linuksie), aby uniknąć niepotrzebnego dostępu do dysku fizycznego.
W każdym razie jedynym sposobem, aby się upewnić, jest przetestowanie symulacji w obu środowiskach i czasu, jaki zajmuje jej uruchomienie. Jednak zanim to zrobisz, możesz przyjrzeć się istniejącym testom porównawczym, takim jak WSL vs.Docker vs. VirtualBox vs. natywny test wydajności wydajności Linuksa autorstwa Phoronix od lutego 2018 r. I sprawdzić wyniki dla testów testujących te same komponenty systemu, podobnie jak twoja symulacja.
(FWIW, wyniki Phoronix wydają się w większości zgodne z ogólnymi zasadami, które przedstawiłem powyżej, chociaż istnieje kilka znaczących osobliwości, takich jak VirtualBox, najwyraźniej przewyższający natywnego Linuksa w kilku testach porównawczych we / wy, najwyraźniej z powodu jego wirtualnego dysku nie zawsze natychmiast synchronizującego dane na dysk fizyczny. Jednym z potencjalnie istotnych problemów, których nie zauważyłem powyżej, jest to, że testy porównawcze pokazują znaczące różnice w wielowątkowej wydajności OpenMP zarówno pomiędzy różnymi środowiskami hosta, jak i między różnymi dystrybucjami Linuksa, nawet gdy są uruchomione na gołym sprzęcie. Z perspektywy czasu nie jest to zbyt zaskakujące, ponieważ jądro obsługuje wątki i IPC. Sądzę, że duża różnica między dystrybucjami może sprowadzać się do różnych parametrów strojenia środowiska uruchomieniowego i / lub kompilacji czasu).
*) Zgodnie z tym postem na blogu MSDN z 2016 roku, w rzeczywistości istnieją WSL dwa komponenty interfejsu systemu plików w WSL: VolFs, który ściśle emuluje natywną semantykę systemu plików Linux nad NTFS i jest używany do montowania np. /
I /home
oraz DrvFs, który zapewnia głównie semantykę podobną do Windows i jest używany do uzyskiwania dostępu do dysków systemu Windows za pośrednictwem /mnt/c
itp. Jeśli twoje oprogramowanie nie wymaga specyficznych funkcji systemu plików Linux, takich jak wiele twardych linków do tego samego pliku, skonfigurowanie go do przechowywania plików danych w folderze DrvFs może poprawić wydajność dostępu do plików na WSL.
**) Zgodnie z tym wątkiem Reddit z maja 2017 r. „Tmpfs jest obecnie emulowany przy użyciu dysku” na WSL. O ile coś się nie zmieniło w ciągu ostatniego roku, prawdopodobnie oznacza to, że używanie tmpfs na WSL nie daje żadnej korzyści w zakresie wydajności w porównaniu do używania normalnego systemu plików na dysku.