在 powershell 与 cmd 中运行 Rust 代码的奇怪性能差异

问题描述 投票:0回答:1

我有一个不平凡的 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)

还是很慢

powershell rust
1个回答
0
投票

好吧,直到 $Env::RUST_BACKTRACE=1 是非常非常昂贵的。或者当然是您使用的任何 shell 中的常规等效项

超阈值性能浏览器(https://superluminal.eu/download/)立即找到了它

© www.soinside.com 2019 - 2024. All rights reserved.