- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我维护的一些代码中,我看到 TClientDataSet.OnCalcFields
事件处理程序中使用了两种不同的方法:
with DataSet do
begin
// 1. Call FieldByName twice
if AMinDate > FieldByName(SPlanAllocatieFromDate).AsDateTime then
AMinDate := FieldByName(sPlanAllocatieFromDate).AsDateTime;
// 2. Put the retrieved FieldByName value in a temp var
lEmpID := FieldByName(SPlanAllocatieEmpID).AsInteger;
if lEmpID <> 0 then lTSAllocatedEmpIDs.Add(IntToStr(lEmpID));
end;
编译器(Delphi XE2、Win32 应用程序)是否会优化方法 2 以使用临时变量?这两个 FieldByName 非常接近,您甚至可以说嵌套。
如果没有,我应该重写 1. 因为 OnCalcFields 经常执行。
顺便说一句。我知道 Fields[] 与 FieldByName() 的比较,或者在运行 EOF 循环时使用临时 TField var,这些不是这里的问题。最佳答案
Delphi 编译器的任何版本都没有做这样的事情。
此类优化需要编译器能够证明对 FieldByName 的两次调用始终会给出相同的结果,并且目前没有将方法标记为确定性的规定。
请注意,理论上(如果实际上不太可能)两个调用很可能不会给出相同的结果,在这种情况下,例如如果不同的线程在第一次和第二次调用之间从集合中删除一个字段。通常,编译器不知道也不关心调用站点特定方法调用实际执行的操作。
关于delphi - 编译器是否优化(关闭)相同的 FieldByName 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452037/
我读过一篇博客文章(目前我找不到链接),其中作者说分配局部变量比使用 ADOQuery.FieldByName('...').asString 或更快TSQLQuery.FieldByName('..
我碰巧有一个非常有趣的查询和问题。我们正在运行 Oracle 12c(大约一年前从 11g 迁移),最近刚刚从 jOOq 3.4.x 迁移到 3.7.3,我不想使用现在已弃用的 DSL.fieldBy
我正在使用Delphi XE2。我的代码从 SQL-Server 2008 R2 数据库中提取数据。返回的数据是一个包含 1,055,227 字节数据的 nvarchar(max) 字段。我使用以下代
我说的是 Delphi + ADO + MSSQL。 好的,我知道带有参数的查询对于 SQL 注入(inject)是非常安全的。 另一方面,动态查询是相当不安全的。 但是经典的 FieldByName
在我维护的一些代码中,我看到 TClientDataSet.OnCalcFields 事件处理程序中使用了两种不同的方法: with DataSet do begin // 1. Call
我正在尝试使用 golang 中的反射从一个结构中读取,我能够成功地做到这一点,但我想知道我该怎么做才能忽略字段名称的大小写。 我有下面的代码 type App struct{ AppID
我将数据传递给具有输入类型接口(interface)的函数。 这段代码: main(){ SampleData := Input{ Recipients: []string{"abc"
在下面的示例中,当未找到 field 时,我正在尝试找出如何停止执行我的程序。 如果 FieldByName(key) 返回零值,我该如何警告用户未找到该字段? field := mutable.Fi
调用反射值的 .FieldByName 方法时出现以下错误,确切的错误是:- panic: reflect: call of reflect.Value.FieldByName on ptr Valu
val 有什么值(value)? ,为字符串类型,当列名fieldName时获取是 null对于选定的行?这里myQry是一个数据库查询。 val := myQry.FieldByName('fiel
我有一个 project 函数,它返回一个 slice ,其中包含输入 slice 中每个结构或映射的名称的字段值。我遇到输入 slice 包含指向结构的指针的情况。我已经设置了一个递归函数来对值进行
我有一个类似这个演示的数据结构。 type Family struct { first string last string } type Person struct { name
我有一个类型为 interface{} 的变量,我想使用反射更改字段的值。我该怎么做?由于其他要求,变量必须是 interface{} 类型。如果变量不是 interface{} 类型,则一切正常,否
我是一名优秀的程序员,十分优秀!