我有一个不平凡的 Rust 应用程序。我正在谈论的这篇文章加载了约 500k 的文本,解析该文本并将其加载到 sqlite 数据库中。我在那段代码中放置了一个计时器来显示差异
当我在 Windows 11 上的 Windows 终端中从 Powershell 运行应用程序时
我明白了
PS C:\work\db65> .\target\debug\db65.exe
db65 0.1.5 (65e48f8)
>> ll ft.dbg
version
information
lib
csyms: 67
files: 116
lines: 4655
modules: 81
segments: 9
spans: 3320
scopes: 143
symbols: 1503
it took 5401 milli seconds
>>
~5 秒解析和加载。但是,当我通过从开始菜单启动 cmd 来运行相同的二进制文件时,我得到了
C:\work\db65>target\debug\db65.exe
db65 0.1.5 (65e48f8)
>> ll ft.dbg
version
information
lib
csyms: 67
files: 116
lines: 4655
modules: 81
segments: 9
spans: 3320
scopes: 143
symbols: 1503
it took 210 milli seconds
>>
速度快了大约 20 倍!
它是使用相同命令行选项运行的相同二进制文件。
我不知道该看什么来尝试解决这个问题。
请注意,如果在 powershell 中我会这样做
PS C:\work\db65> cmd
Microsoft Windows [Version 10.0.22621.2861]
(c) Microsoft Corporation. All rights reserved.
C:\work\db65>target\debug\db65.exe
db65 0.1.5 (65e48f8)
还是很慢
好吧,直到 $Env::RUST_BACKTRACE=1 是非常非常昂贵的。或者当然是您使用的任何 shell 中的常规等效项
超阈值性能浏览器(https://superluminal.eu/download/)立即找到了它