返回首页

一周热榜

2作者: itsmeadarsh2 天前原帖
我构建了最快的 React 虚拟化库。其核心部分使用 Rust 编写,并编译为 WebAssembly。 <p>在线演示:<a href="https://warper.tech" rel="nofollow">https://warper.tech</a></p> 支持 1000 万行数据,帧率超过 120 FPS。没有延迟,没有掉帧。 <p>现有的库如 react-window 和 react-virtuoso 在大规模数据处理时遇到了瓶颈。它们依赖于 JavaScript 的二分查找和 O(n) 的扫描来处理可变高度的元素,而 Warper 则有所不同。</p> <p>该引擎使用了:</p> - Fenwick 树实现 O(log n) 的可变高度查找 - O(1) 算法处理固定高度的项目 - 在 WASM 和 JS 之间使用零拷贝的类型化数组 - 预分配的内存池,在滚动时实现零垃圾回收 <p>在 M1 MacBook Pro 上进行的基准测试显示,处理 100 万行数据时,Warper 达到了 119 FPS,而 react-virtuoso 降至 58 FPS。在处理 1000 万行数据时,Warper 保持在 118 FPS,而 virtuoso 降至 31 FPS。</p> <p>它的速度并不是略快,而是根据工作负载快 2-4 倍。</p> <p>权衡在于包的大小:约 45KB,而 react-window 只有 6KB。如果你需要性能,这个差异是值得的。</p> <p>通过 GitHub Sponsors 可获取,地址为 github.com/sponsors/itsmeadarsh2008</p> <p>欢迎提问有关架构的问题。</p>
2作者: JosifA4 天前原帖
我的日常使用设备是运行Linux的Macbook Air M2,具体来说是Fedora Asahi Remix。在使用它时,我最想念的一点是偶尔能够通过Wine运行Windows软件。显然,你可以在上面运行Steam,并且Steam允许安装和运行任意Windows软件,但当我尝试时,我无法创建账户,总的来说,我更不想使用Steam。我成功在muvm(一个在16K内核上运行4K页面内核的虚拟机)下运行了一个旧版本的Heroic Games Launcher [1]。不过这并不是特别简单,我希望能有更好的体验。我在Heroic和其他专注于游戏的启动器上遇到的另一个问题是缺乏灵活性——它们要么适用于特定的软件,要么不适用,你对此无能为力。例如,一个安装程序可能需要通过Winetricks [2]安装某个特定的软件包才能运行。Heroic在安装程序运行之前并没有给你机会去运行任何东西。长话短说,我决定构建一个自己的Wine前缀管理器,它将更加灵活,不仅仅专注于游戏,并且能够在Asahi Linux上运行。此外,我决定用一种对我来说是新语言(Dart / Flutter)来编写它,并作为副产品学习这门语言。五个月后,它终于准备好了,我希望能得到一些反馈。顺便提一下,它也支持常规的x86_64 Linux发行版,尽管在这些发行版上的测试不如在Asahi上那么多。 [1]: <a href="https://heroicgameslauncher.com/" rel="nofollow">https://heroicgameslauncher.com/</a> [2]: <a href="https://github.com/Winetricks/winetricks" rel="nofollow">https://github.com/Winetricks/winetricks</a>