使用字段名称而不是索引访问数据集字段的性能
性能可以忽略不计吗?
例如,
myQuery.FieldbyName("MyField").AsString;
myQuery.Fields[0].AsString;
案例: 具有相当数量字段的表,例如 > 50 个字段
访问大型结果集,例如 > 100,000 行 字段
名称的可读性优势是否值得降低性能?
Is the performance negligible?
For example,
myQuery.FieldbyName("MyField").AsString;
myQuery.Fields[0].AsString;
Cases:
Table with a decent number of fields, say > 50 fields
Accessing large resultsets, say > 100,000 rows
Is the readability benefit of field names worth the performance decrease?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是 François Gaillard 撰写的关于 FieldByName 性能问题的有趣帖子。
Here is an interesting post by François Gaillard about FieldByName performance issues.
性能可能不会可以忽略不计,具体取决于您按名称访问该字段的频率。如果您对每个字段和每一行都使用它,您可能会注意到性能下降(例如,请参见 http:// /www.delphifeeds.com/go/s/74559)。为了保持可读性并提高性能,您可以:
['FieldName'] 或FieldByName() 语法一次,并将对该字段的引用存储在变量中。"static"持久字段声明,右键单击数据集,选择字段编辑器并添加所需字段。它将声明正确的 TField 后代,并让您指定一个名称。此外,AsXXXXX 调用可能比使用 TField 后代本机 Value 属性慢。
The performance may not be negligible, depending on how often you access the field by name. If you use it for every field and every row you may notice a performance decrease (see for example http://www.delphifeeds.com/go/s/74559). To mantain readability yet improve performance you could:
['FieldName'] orFieldByName() syntax only once, and store a reference to the field in a variable."static"persistent field declaration, right-clicking the dataset, select Field Editor and adding needed fields. It will declare the proper TField descendant, and let you assign a name.Also the AsXXXXX calls may be slower than using a TField descendant native Value property.
我发现 FieldByName 明显变慢。
我通常通过中间层访问数据库,该中间层多次访问同一个表中的整个记录。创建该层时,我将每个字段的索引分配给一个变量。然后,我使用这些变量供以后访问,以便仍然具有可读的代码。
I have found FieldByName to be noticeable slower.
I normally access the database through an intermediate layer, that access entire records from the same table alot of times. On creation of that layer I assign the index of each field to an variable. I then use the variables for later access, to still have readable code.