德尔福64位? [关闭]

2024-02-17

众所周知,Delphi 64 位即将到来(至少每个 Delphi 程序员)。除了 codegear 所说的 64 位 Delphi 应用程序的好处(codegear 没有说太多)之外,拥有 64 位 Delphi 应用程序会给我带来什么好处? Codegear 发布后立即将我的应用程序移植到 64 位真的是个好主意吗?

EDIT:

我只是问这个问题,因为我想要我能得到的所有意见。现在,我可以说我确实需要更多可用内存供我的应用程序使用,因为它消耗了大量资源。如果可能的话,我真的可以使用更快的速度。我不需要 shell 扩展,也不需要插件。

我的客户也在询问我的应用程序的 x64 版本,但我真的不明白他们为什么要求它,因为他们实际上是律师,不知道什么是 64 位应用程序。

EDIT

实际上我并没有直接参与应用程序的开发。我是技术团队的一员,我创建的东西供我工作的公司中的其他开发人员用来真正开发最终的应用程序。所以,我的工作是做技术工作,将应用程序移植到 x64 就是我所做的事情,但我需要向我的上级解释为什么我要这样做。


与针对 32 位 (x86) 编译的相同程序相比,64 位程序具有以下优点:

  • 更多寄存器。64位x86芯片有还有几个寄存器 http://en.wikipedia.org/wiki/X86-64理论上(如果编译器利用的话)在某些情况下这可以产生更快的代码。

  • 更多内存。对于 32 位程序,如果使用以下命令进行编译,则通常会限制为 2GB 地址空间或总共 4GB 地址空间/LARGEADDRESSAWARE,由于 Windows 的内核/用户空间分割,实际上约为 3.5GB。 64 位进程可以处理更多的事情。仅当您的应用程序需要大量内存时这才重要。

  • 能够为 64 位程序构建插件,就像资源管理器一样。除非您将 COM 用于对数据进行编组的插件,否则您无法在 Windows 的一个进程中混合使用 32 位和 64 位代码,例如加载 32 位 DLL 的 64 位 EXE。例如,如果您想编写一个 Explorer 插件,则无法让它与旧版本的 Delphi 一起使用 64 位版本的 Explorer。您可以使用 64 位版本。

  • 德尔福特定:编译器将使用SSE/SSE2 https://stackoverflow.com/questions/4064189/floating-point-support-in-64-bit-compiler指示对于浮点计算,当前的 32 位编译器仅使用 x87 FPU 指令(我认为)。这应该会提高浮点数学的速度。您可能甚至不会注意到,除非您的应用程序高度依赖于 FP(可能是游戏,或者数据处理应用程序之类的东西。)

您的问题“我会从 64 位 Delphi 应用程序中受益吗?”的答案是高度依赖于您的具体应用。一般来说,除了可能的小幅速度增加之外,不太可能有太大的好处。不过,不要依赖 64 位来加速缓慢的应用程序:您仍然需要进行算法更改才能大幅提升速度。 64 位并不是灵丹妙药。除此之外,只有当您已经遇到 32 位施加的限制之一时,您才需要进行更改 - 我怀疑您还没有遇到,否则您就不会问这个问题。

如果您决定转换,您可能会发现这个线程 https://stackoverflow.com/questions/4051603/how-should-i-prepare-my-32-bit-delphi-programs-for-an-eventual-64-bit-compiler很有用。

但另一件事是:即使您不需要更改,您也可能想要更改,尤其是当您的应用程序是个人项目时。您可能会学到一些东西,当您修复 32/64 位问题时,您的代码质量将会更高,而且这样的项目会很有趣。毕竟你是一名程序员:)

Edit:我看到你已经更新了你的问题“我可以说,我确实需要更多可用内存供我的应用程序使用,因为它消耗了大量资源。如果可能的话,我真的可以使用更高的速度。”

  • 什么资源?记忆? 64 位将为您提供更大的可寻址地址空间,仅此而已。如果这些算作资源的话,它不会给你更多的 GDI 句柄等。但是,如果您确实需要更多内存,那么 64 位值得转换为。

  • “更快的速度”,如果你想要big差异,更有可能通过算法或线程更改而不是通过 64 位编译器来实现。

  • “我的客户也在询问我的应用程序的 x64 版本,但我真的不明白他们为什么要求它,因为他们实际上是律师,不知道什么是 64 位应用程序。”他们很可能听说 64 位更好或更快。在理想的世界中,客户会有基于现实的需求,但情况并非总是如此。务实地说,如果客户想要这样的东西,可能值得转换,仅仅因为这让他们高兴:高兴的客户是好的,他们可能会为新版本付钱给你,这可能有助于提高你公司的口碑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

德尔福64位? [关闭] 的相关文章

  • 如何更改 Delphi 2010 IDE 中编辑器选项卡的字体大小?

    有谁知道如何更改 Delphi 2010 IDE 中编辑器选项卡的字体大小 我的 1080p 22 显示器的字体太小 无法阅读 而且会导致眼睛疼痛 一些笔记 它不尊重系统的 DPI 设置 因此更改系统设置没有帮助 而且 我现在已经使用 14
  • Javascript 中 64 位整数的加法或减法

    有没有一种简单的方法 希望是一个小函数 而不是一个库 在 JavaScript 中对 64 位整数进行加或减 示例 64 位整数 291270990346989568 背景 我正在使用具有 64 位推文 ID 的 Twitter API 我
  • Delphi 7,加载PNG到TImage

    只是想加载 PNG 尝试使用适用于其他格式的 OleGraphic 来使用我的 LoadPic 但在 PNG 上失败 目标是将图像复制到隐藏位图 然后将其屏蔽并复制到可见的工作图像画布 如果 CopyRect 不这样做 请随意提出其他建议
  • 如何添加资源并使用它们

    在我的应用程序中 我想添加 2 个图像作为资源 我想使用这些图像 当我在应用程序中单击 是 按钮时 第一张图像将被设置为壁纸 当我在应用程序中单击 否 按钮时 第二张图像将被设置为桌面壁纸 提前致谢 regards 最简单的方法是创建一个文
  • 错误:使用 Microsoft WebService.dll 通过 Delphi7 规范化 XML

    我正在使用 Delphi7 修改旧项目以添加使用证书和签名 经过一番搜索后我发现XML 规范化函数 https learn microsoft com en us previous versions dd815358 v vs 85 但我无
  • VCL.位图到 FMX.位图

    我在网上找到了这段代码 但 FMX Bitmap 没有扫描线 是否可以以某种方式将 VCL TBitmap 复制或绘制到 FMX Bitmap IFDEF MSWINDOWS type TBitmap FMX Types TBitmap T
  • 如何在 OSX 上的应用程序名称下创建子项菜单?

    如何在下面添加TMenuItemProject1以上Quit在下面的屏幕截图上 我创建了一个 TMenuBar 并选中了 UseOSMenu 属性 我添加的第一个 TMenuItem 是主栏中的第二个 TMenuItem 您可以通过将 II
  • 如何确保 FormClose 程序运行,无论程序如何退出?

    在 Delphi 7 中 我有一个 TMainForm FormClose 过程 旨在在程序退出时写出一些状态 这在手动关闭程序时效果很好 但是 我发现如果程序被 Windows 强制 退出 例如在 Windows 更新后需要重新启动 则不
  • 获取 TransactSql 批处理中的语句数计数

    对于不使用 Delphi 的读者 虽然以下内容是根据 Delphi 编码来表达的 但我的实际技术问题不是特定于 Delphi 的 而是关于如何找出 Sql Server 如何 理解 TransactSql 批处理提交给它 TAdoQuery
  • 如何仅在调试模式下激活 ReportMemoryLeaksOnShutdown?

    我需要激活ReportMemoryLeaksOnShutdown报告应用程序内存泄漏的功能 但仅限于调试模式 当 Delphi IDE 运行时 我怎样才能做到这一点 如果您的意思是使用调试构建配置 D2007 编译的 调试模式 则您将定义
  • Delphi线程死锁

    我有时会在销毁某些线程时遇到死锁问题 我尝试过调试该问题 但在 IDE 中调试时似乎从未存在死锁 可能是因为 IDE 中的事件速度较低 问题 当应用程序启动时 主线程会创建多个线程 线程始终处于活动状态并与主线程同步 完全没有问题 当应用程
  • 32 位键盘挂钩意外地在 64 位应用程序中工作,但挂起 Outlook

    我已经读了很多关于这个问题的文章 但情况却变得更加混乱 我有一个 32 位应用程序 它安装了 KeyboardHook 来等待全局热键并唤醒 在 Win 7 x64 版本上运行它 我注意到按下热键时它会挂起 Outlook x64 版本 所
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • 带位图的简单组合框

    如何将位图放入组合框中并将样式设置为简单 例如 Google Chrome 的右侧有星号 Firefox 的右侧有箭头 我尝试了这段代码 procedure TForm2 ComboBox1DrawItem Control TWinCont
  • 我如何在Delphi中处理事件?

    例如 我有一个程序 在单击 Button1 后执行某些操作 如果没有 Button1Click 中的代码 如何处理按钮的 onclick 事件 我需要为 Button1 动态添加事件 unit Unit1 interface uses Wi
  • 如何在Delphi中下载一个非常简单的HTTPS页面?

    我尝试了在这里看到的代码 但它不适用于 HTTPS 我需要将此页面作为字符串下载 并在其上添加一些换行符 以便将信息按顺序放入 TMemo 中 怎么做 我尝试使用 Indy 但由于 SSL 问题而失败 我尝试了此页面的解决方案 如何将网页下
  • Delphi 返回 TList 时出错

    我做了一个非常简单的应用程序 但我有一个我真的无法理解的问题 看一下这个基本代码 unit Unit1 interface uses Winapi Windows Winapi Messages System SysUtils System
  • delphi中如何实现多重继承?

    我正在对一个旧库进行完全重写 我不确定如何处理这种情况 为了便于理解 大家都欢呼自行车类比 我有以下课程 TBike 自行车本身 TBikeWheel 自行车的一个轮子 TBikeWheelFront and TBikeWheelBack
  • 如何更改 TPageControl 上标签的方向?

    我是 Delphi 的新手 再次强调 我在 1994 年就使用过 Delphi 我现在有 Delphi 2009 Pro 来自Java 我发现对象继承非常晦涩 我的用户想要选项卡位于左侧的选项卡式页面 但是 TPageControl 不允许
  • Delphi 5 中的 Oracle 数据库连接

    我正在使用 Delphi 5 版本 我想连接到 Oracle 数据库 我有 TDatabase 组件 我不知道如何通过 Delphi 连接到数据库 请提供连接数据库的步骤 谢谢 The TDatabase http docwiki emba

随机推荐