Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

常规 Visual Studio 与 ClangCL

Posted on 2023-02-27

肖像2018facebook.jpg

如果您使用 Microsoft 工具在 C++ 中编程,则可以使用传统的 Visual Studio 编译器。或者您可以使用 LLVM 作为前端 (ClangCL)。

让我们将它们的性能特征与快速字符串转码库 ( simdutf ) 进行比较。我使用最新的 Visual Studio (2022) 和最新的 ClangCL 组件(基于 LLVM 15)。为了构建库,我们使用最新版本的 CMake。我将放弃并行构建:我使用默认设置。在硬件方面,我使用Microsoft Surface Laptop Studio :它有一个Tiger Lake Intel 处理器(i7-11370 @ 3.3 GHz)。

从 GitHub 获取 simdutf 库后,我准备了标准 Visual Studio 的构建目录:

 > cmake -B buildvc

我为 ClangCL 做同样的事情:

 > cmake -B buildclangcl -T ClangCL

对于每个构建目录,我可以使用以下命令在调试模式 ( --config Debug ) 或发布模式 ( --config Release ) 中构建

> cmake --build buildvc --config 调试  
   

该项目默认构建了一个广泛的测试套件。我经常依赖我的 Apple macbook,并且我使用 Amazon (AWS) 节点构建了很多软件。我使用 AWS c6i.large 节点(Intel Icelake 运行频率为 3.5 GHz,2 个 vCPU)。

simdutf 库及其测试套件在合理的时间内构建,如下表(发布构建)所示。为了进行比较,我还在 Microsoft 笔记本电脑(适用于 Linux 的 Windows 子系统)上使用“WSL”构建了库。

苹果电脑空气 ARM M2 处理器 LLVM 14 25 秒
AWS/Linux 英特尔冰湖处理器 海湾合作委员会 11 54 秒
AWS/Linux 英特尔冰湖处理器 LLVM 14 54 秒
WSL(微软笔记本电脑) 英特尔 Rocket Lake 处理器 海湾合作委员会 11 3 分 40 秒
WSL(微软笔记本电脑) 英特尔 Rocket Lake 处理器 LLVM 14 3 分 15 秒

在 Intel 处理器上,我们构建了多个内核来支持各种处理器系列。在 64 位 ARM 处理器上,我们只构建一个内核。因此AWS/Linux系统和macbook的性能有些可比性。我的 Microsoft Surface 笔记本电脑在 Linux 模式下速度较慢。

让我们切换回 Windows 并构建库。

调试 发布
Visual Studio(默认) 2分钟 2 分 15 秒
ClangCL 2 分 51 秒 3 分 12 秒

让我们运行一个执行基准。我们选择一个UTF-8 阿拉伯语文件,将其加载到内存中,然后使用快速 AVX-512 算法将其转码为 UTF-16。 (确切的命令是benchmark -P convert_utf8_to_utf16+icelake -F Arabic-Lipsum.utf8.txt )。

调试 发布
Visual Studio(默认) 0.789 GB/秒 4.2GB/秒
ClangCL 0.360 GB/秒 5.9 GB/秒
WSL 海湾合作委员会 11 (略) 6.3GB/秒
WSL LLVM 14 (略) 5.9 GB/秒
AWS 服务器 (海湾合作委员会) (略) 8.2GB/秒
AWS 服务器 (clang) (略) 7.7 GB/秒

我得出以下初步结论:

  1. 调试代码和发布代码之间可能存在显着的性能差异(例如,5 倍到 15 倍的差异)。
  2. 使用 ClangCL 编译 Windows 软件可能会带来更好的性能(在发布模式下)。在我的测试中,我使用 ClangCL 获得了 40% 的加速。但是,使用 ClangCL 进行编译需要更长的时间。我已经推荐 Windows 用户使用 ClangCL 构建他们的库,并且我坚持这个建议。
  3. 在调试模式下,常规 Visual Studio 生成的代码性能更高,编译速度比 ClangCL 更快。

因此,在调试模式下使用常规 Visual Studio 编译器可能是有意义的,因为它可以快速构建并在测试代码时提供其他好处,然后在发布模式下使用 ClangCL 以提高性能。

尽管“Microsoft Surface Laptop Studio”拥有出色的 CPU,可与最好的 AWS 节点提供的性能相媲美。我不确定为什么在 Microsoft 笔记本电脑上构建代码比在云中花费那么多时间。笔记本电脑很贵,它有一个很好的 CPU。该驱动器不是顶级驱动器,但获得了好评。我很困惑。

原文: https://lemire.me/blog/2023/02/27/visual-studio-versus-clangcl/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme