user-interface - 是否有针对从 WSL 运行的慢速 X11 服务器的解决方法?
问题描述
我最近将一个 GitHub 存储库克隆到我的 Windows 10 PC 中。由于代码主要使用 C++,因此必须对其进行编译和构建才能生成工作的 GUI。
为此,我使用了 WSL,它允许我编译、构建和运行(使用 CMake),但由于 WSL 没有自己的显示器,我不得不使用 X11 程序(VcXsrv)进行可视化。最后一个似乎使界面变得相当慢,因为 FPS 指示器永远不会超过 15,而且我被告知本机构建工作在 60 FPS。
我想知道是否有一个简单的解决方法,我可以从 WSL 中尝试以使其更快,因为我的另一个选择是尝试学习 Visual Studio。
在 WSL Ubuntu 20.04 中运行的代码是:
git clone --recurse-submodules https://github.com/nmwsharp/vector-heat-demo.git
cd vector-heat-demo
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
export DISPLAY=localhost:0
./bin/vector_heat /path/to/your/mesh.obj
在 Windows 方面,我使用 VcXsrv 设置:多个窗口,显示 0,不启动客户端,禁用本机 opengl,来自this answer。
解决方案
慢的原因是wsl1的架构。见下文。
比较 WSL1 和 WSL2
- 在 WSL1 中,Linux 内核是一种模拟,有一个软件层将 linux 系统调用映射到 Windows 系统调用(这意味着您在访问设备时会浪费一些时间),这将导致您的情况下的低 FPS。
- 在 WSL2 中,微软创建了一个管理程序
win10
并在其microsoft linux kernel
上运行(您的 ubuntu、debian、...在其之上运行),这意味着WSL2由于跳过了该翻译层而更快(更多信息可以在这里找到:差异 WSL1 & WSL2 - 我还创建了一个如何使用它的指南,
X11
请参见此处(对我有用)
VSCode 连接到 WSL
- 它只是用于编码而不是用于运行您的 gui
- 在这种情况下,您的 WSL 中会启动一个无头 VSCode(服务器)。您的 Windows 上的 VSCode 将连接到此实例(这意味着您将拥有 linux 文件系统 +
gcc toolchain
可用。 - 来自微软的 VSCode 远程 WSL 文档
推荐阅读
- android - 无法导入 CameraX 的供应商扩展
- flutter - 在 Runner 设置中编译 Flutter iOS 错误
- python - 如何在 Python 中写入临时文件并再次读取?
- powershell - 文本文件是否有输出限制?
- unity3d - 从 Unity 的子文件夹中访问脚本
- iis - dotnet publish 错误:该进程无法访问该文件,因为它正被另一个进程使用
- java - Zeppelin:Hive 解释器没有获取详细信息
- python - 从数据框列中删除部分字符串
- python - 与号被替换为逗号
- python - 如何使用循环从数据帧创建特定的 json 格式