gpt4 book ai didi

delphi - 窗口 7 和 Windows Server 2008 R2 : significant increase in run time

转载 作者:行者123 更新时间:2023-12-03 18:37:56 24 4
gpt4 key购买 nike

我们正在使用 Delphi 7 开发控制台软件。

为简化起见,该软件使用嵌入式 TCP 服务器来响应来自 CGI 的外部请求。这些答案包含生成的带有 Techart 图表的 HTML 页面,以及使用 DbExpress 从数据库中提取的数据。

在 Windows 7 和 Windows 2008 R2 服务器上,我们注意到我们软件的运行时间显着增加 - 是 Windows XP 或 Windows Server 2003 上原始处理时间的 2 或 3 倍 - 在标准执行环境中:作为服务启动的软件系统用户帐户。

但是,当我们的软件以简单用户身份、从命令提示符或直接从 IDE( Debug模式)启动时,问题就消失了。

我的第一个问题是:有人已经注意到这个问题了吗?

使用 ProcessExplorer,我们还注意到当软件作为服务启动时,没有创建 GDI 句柄,也没有创建用户句柄。但是当使用用户帐户启动软件时,会创建其中一些句柄。在 Windows XP 和 Windows Server 2003 中,无论是软件作为服务启动还是使用简单的用户帐户启动,这些句柄总是被创建。

这个观察可以与我们的问题联系起来吗?

如果您已经注意到这些行为,您是如何解决问题的?

最佳答案

由于我们在很多地方都依赖于 Windows API CompareString 函数,因此我们无法用非 Windows 版本替换它。
但是,我们发现 API 工作正常,而不是通过使用 LOCALE_INVARIANT($07) 来使用 LOCAL_USER_DEFAULT。
因此,我们决定破解 Windows 中定义的常量值,并在用于比较目的的任何地方重写它,并使用如下条件编译:

{$IFDEF OVERLOAD_LUD}
const
LOCALE_INVARIANT = $7;
LOCALE_USER_DEFAULT = LOCALE_INVARIANT;
{$ENDIF}

这解决了问题。

关于delphi - 窗口 7 和 Windows Server 2008 R2 : significant increase in run time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349922/

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