gpt4 book ai didi

delphi - 如何提高分析的准确性

转载 作者:行者123 更新时间:2023-12-03 15:46:36 28 4
gpt4 key购买 nike

我想提高一些代码的运行时间。

为了第一次计算所有相关代码的运行时间,使用如下代码:

before:= rdtsc;
myobject.run;
after:= rdtsc;

然后我放大相关部分并为其计时,如下所示:

procedure myobject.part;
begin
StartTime:= rdtsc;
...
EndTime:= rdtsc;
inc(TotalTime, (EndTime- StartTime));
end;

我有一些代码可以将计时复制粘贴到 Excel 中,典型的结果如下所示:

Timing difference should not be there
(89.8%和10.2%加起来为100%纯属巧合,与数据或问题无关)
(当数据显示1时,表示0以避免被零除错误)

请注意运行 A运行 B 之间的区别。
我还没有更改任何内容,因此运行 A 和 B 应该给出相同的运行时间。
进一步注意,我知道在两次运行中,过程 part 被调用的次数完全相同(数据相同且算法是确定性的)。

程序部分的运行时间非常短(只是调用了多次)。
如果有某种方法可以在这些短暂的运行时间(少于 700 个 CPU 周期)内阻止其他进程,我的计时将会更加准确。

如何使这些计时更加可靠?
有没有办法独占CPU,只在计时时运行我的任务,而不执行其他任务?

<子>请注意,我并不是在寻找明显的答案,例如:
- 关闭其他正在运行的程序
- 禁用病毒扫描程序等...

我已经标记了问题Delphi,因为我现在正在使用Delphi(并且可能有一些Delphi 特定选项可以实现此结果)。我还将其标记为与语言无关,因为可能有一些更通用的方法。

更新
因为我使用的是 CPU 指令 RDTSC,所以我不受 CPU 限制的影响。如果 CPU 速度减慢,周期数保持不变。

更新2
我有两个答案,但都没有回答问题...
问题是如何防止运行时间发生这些变化?我是否必须运行代码 20 次并始终比较 20 次运行中的最低运行时间?
或者我将程序优先级设置为实时
或者是否有其他技巧可以使用,这样我的代码示例就不会被中断?

最佳答案

To want to improve the running time of some code.

In order to that I first time the running time of all relevant code, ...

好吧,我在这个问题上有点停滞不前,但很多人认为要提高运行时间需要首先准确地测量它。

并非如此。

提高运行时间需要找出什么花费了大部分时间(确切的比例并不重要),并以不同的方式执行,或者根本不执行。它正在做什么通常无法通过计时各个例程来揭示。

Here's the method I use,here's a very amateur video of it .

关于delphi - 如何提高分析的准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984026/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com