是“用代码替换非可视化组件”,这是Delphi 7中经过验证的优化技术。主要针对数据库访问。
发布于 2010-06-14 14:04:14
您引用的网站谈到用代码替换对话框组件,这些代码将在不使用任何组件的情况下显示对话框。另一种方法是编写几行代码,以便在需要对话框时设置和显示对话框,并完全跳过该组件。不过,这并不是真正的速度或大小优化。这不是一个速度优化,因为你的代码会做一个组件本来应该做的事情,它也不是一个大小优化,因为任何一个组件在程序中占据的空间都可以忽略不计。
数据库组件不像对话框组件那样容易替换。Delphi中几乎所有的东西都被设计为使用标准数据库组件的后代。如果您不使用这些组件,那么您将根本不会使用Delphi的任何数据库功能。如果您愿意,您可以使用数据库库的原生API,但我认为,如果您的目标是真正的优化,并且您没有将组件标识为程序非最佳行为的根源,那么这将是愚蠢的。想想在没有数据库组件的情况下重写程序需要多少时间和精力。
发布于 2010-06-14 13:52:47
我看不出基于表单的数据集/查询/表/等等,会比用代码创建的数据集更快或更慢。但是,我喜欢将它们放在代码中,因为这样更容易维护。我见过在组件中嵌入SQL的屏幕,然后它在代码中被覆盖。然后,我必须停下来调查,以确定哪个SQL实际上是有效的。有时表单中的SQL很好,有时它被使用了一段时间,然后被代码击败,有时它永远不会激活,SQL在formcreate中被击败。因此,我必须确定这是设计出来的,还是只是草率的剩余物。此外,如果SQL更改在.DFM中而不是.PAS中,那么在代码审查中很容易遗漏SQL更改。也就是说,我并不总是查看.DFM,因为我对标签标题是否更改或按钮是否移动不感兴趣。
因此,尽管它很适合进行原型设计,但在涉及生产代码时,最好将所有数据库逻辑(SQL、表和字段定义)都放在.pas文件中。
更新:我终于尝试了一下CnPack。在众多的好东西中,有一个很棒的工具叫做“将选定的组件转换为代码”。表单设计向导|更多...|将所选组件转换为代码。这一切都是为你做的。
发布于 2010-06-14 13:26:29
这不是一个组件或不是组件的问题。如果涉及到数据库访问,那么BDE是非常慢的,所以将它改为其他东西是一个很好的举措。
顺便说一句--优化不是关于“经过验证的技术”--它是关于识别问题并解决它。如果问题恰好是数据库访问速度慢,那么这就是你必须改变的。
https://stackoverflow.com/questions/3037467
复制